« Securely transferring files over FTP in .NET | Main | Communicating with a POP3 server in .NET »

September 14, 2008

Communicating with an SMTP server and sending emails in .NET

Overview

       This article will demonstrate how to communicate with an SMTP server and how to send emails in NET using  Email Factory for .NET.

Code Example
      
      
Download licenseEmail.txtDownload SMTPEmailEx.cs   |  Download SMTPEmailEx.vb


   1:  using System;
   2:  using System.Collections.Generic;
   3:  using System.Text;
   4:  using Jscape.Email;
   5:   
   6:  namespace SMTPNet
   7:  {
   8:      class SMTPEx
   9:      {
  10:          Smtp smtp = null;
  11:          public SMTPEx(string server, string username, string password)
  12:          {
  13:              smtp = new Smtp(server);
  14:              smtp.LicenseKey = null; // copy license from license.txt here
  15:              smtp.Login(username, password);
  16:              smtp.ConnectedEvent +=
  17:                  new Smtp.ConnectedEventHandler(smtp_ConnectedEvent);
  18:              smtp.DisconnectedEvent +=
  19:                  new Smtp.DisconnectedEventHandler(smtp_DisconnectedEvent);
  20:          }
  21:   
  22:          private void smtp_DisconnectedEvent(object sender, SmtpDisconnectedEventArgs e)
  23:          {
  24:              Console.WriteLine("Disconnected from : " + e.Host);
  25:          }
  26:   
  27:          private void smtp_ConnectedEvent(object sender, SmtpConnectedEventArgs e)
  28:          {
  29:              Console.WriteLine("Connected to : " + e.Host);
  30:          }
  31:   
  32:          public void openConnection()
  33:          {
  34:              smtp.Connect();
  35:          }
  36:   
  37:          public void closeConnection()
  38:          {
  39:              smtp.Disconnect();
  40:          }
  41:   
  42:          public string IssueCommand(string command)
  43:          {
  44:              return smtp.IssueCommand(command);
  45:          }
  46:   
  47:          public void sendMessage(string from, string to, string subject, string body)
  48:          {
  49:              EmailMessage message = new EmailMessage(to, from);
  50:              message.Subject = subject;
  51:              message.SetBody(body);
  52:              smtp.Send(message);
  53:          }
  54:   
  55:          public void sendHtmlMessage(string to, string from, string subject,
  56:                                      string textBody, string htmlBody,
  57:                                      Dictionary<string, string> resources)
  58:          {
  59:              HtmlEmailMessage ret = new HtmlEmailMessage();
  60:              ret.To = to;
  61:              ret.From = from;
  62:              ret.Subject = subject;
  63:              ret.SetTextBody(textBody);
  64:              ret.SetHtmlBody(htmlBody);
  65:              foreach (KeyValuePair<string, string> pair in resources)
  66:                  ret.Embed(pair.Value, pair.Key);
  67:              smtp.Send(ret);
  68:          }
  69:   
  70:   
  71:   
  72:          static void Main(string[] args)
  73:          {
  74:              try
  75:              {
  76:                  string server = "[server]";
  77:                  string username = "[username]";
  78:                  string password = "[password]";
  79:                  SMTPEx e = new SMTPEx(server, username, password);
  80:                  e.openConnection();
  81:                  string response = e.IssueCommand("HELO 10.0.0.1");
  82:                  Dictionary<string, string> dict = new Dictionary<string, string>();
  83:                  dict.Add("imageUrl1", "imageKey1");
  84:                  dict.Add("imageUrl2", "imageKey2");
  85:                  dict.Add("imageUrl3", "imageKey3");
  86:                  e.sendHtmlMessage("to@to.com", "from@from.com", "subject",
  87:                                    "testBody", "htmlBody", dict);
  88:                  e.closeConnection();
  89:              }
  90:              catch (Exception e)
  91:              {
  92:                  Console.WriteLine(e.Message);
  93:              }
  94:   
  95:              Console.WriteLine("Press any key to exit ... ");
  96:              Console.Read();
  97:          }
  98:      }
  99:  }

  Lines 1-4   : Necessary import statements.
  Lines 10-20 : Initialize Smtp instance and connect event handlers.
  Lines 22-30 : Event handlers for connected/disconnected events.
  Lines 32-40 : Methods for opening and closing connections.
  Lines 42-45 : Issue a SMTP command to the server.
  Lines 47-53 : Send an email message.
  Lines 55-68 : Send an html message.
  Line  79    : Initialize SMTPEx instance.
  Line  81    : Issue a command to the server.
  Lines 82-85 : Create a dictionary instance.
  Lines 86-87 : Send an html message.

TrackBack

TrackBack URL for this entry:
http://www.typepad.com/services/trackback/6a00e550fd70338833010534a26b95970b

Listed below are links to weblogs that reference Communicating with an SMTP server and sending emails in .NET:

Comments

Feed You can follow this conversation by subscribing to the comment feed for this post.

Verify your Comment

Previewing your Comment

This is only a preview. Your comment has not yet been posted.

Working...
Your comment could not be posted. Error type:
Your comment has been saved. Comments are moderated and will not appear until approved by the author. Post another comment

The letters and numbers you entered did not match the image. Please try again.

As a final step before posting your comment, enter the letters and numbers you see in the image below. This prevents automated programs from posting comments.

Having trouble reading this image? View an alternate.

Working...

Post a comment

Comments are moderated, and will not appear until the author has approved them.