Tag Archives: send mail

Sending mail with attachments

MIME attachments are represented by Attachment objects, and are managed by use of the MailMessage.Attachments property. The source of attachments can be a file, a MemoryStream, or any other type of .NET Framework Stream. As a result, the ways an attachment can be created is limitless. This topic demonstrates two ways of creating an attachment.

C#:

const string serverName = "myserver";
const string user = "name@domain.com";
const string password = "mytestpassword";
const int port = 465;
const SecurityMode securityMode = SecurityMode.Implicit;
SmtpClient client = new SmtpClient();
try
{
   MailMessage mmMessage = new MailMessage();
   mmMessage.From.Add("from@thedomain.com");
   mmMessage.To.Add("name@domain.com");
   mmMessage.Subject = "Test Subject";
   mmMessage.BodyText = "Test Content";
   // Attach file to the message.
   mmMessage.Attachments.Add("myfile.dat");
   // Attach content data from a stream to the message.
   Stream stream = new FileStream("myfile.dat", FileMode.Open);
   // The stream will be automatically closed after adding to the attachment list.
   mmMessage.Attachments.Add(new Attachment(stream, "teststream"));
   Console.WriteLine("Connecting SMTP server: {0}:{1}...", serverName, port);
   // Connect to the server.
   client.Connect(serverName, port, securityMode);
   // Login to the server.
   Console.WriteLine("Logging in as {0}...", user);
   client.Authenticate(user, password);
   Console.WriteLine("Sending the message with attachment...");
   client.Send(mmMessage);
   Console.WriteLine("Message sent...");
   // Disconnect.
   Console.WriteLine("Disconnecting...");
   client.Disconnect();
}
catch (SmtpException smtpExc)
{
   MessageBox.Show(string.Format("An SMTP error occurred: {0}, ErrorStatus: {1}", smtpExc.Message, smtpExc.Status));
}
catch (Exception exc)
{
   MessageBox.Show(string.Format("An error occurred: {0}", exc.Message));
}

VB.NET:

Const serverName As String = "myserver"
Const user As String = "name@domain.com"
Const password As String = "mytestpassword"
Const port As Integer = 465
Const securityMode As SecurityMode = securityMode.Implicit
Dim client As New SmtpClient()
Try
    Dim mmMessage As New MailMessage()
    mmMessage.From.Add("from@thedomain.com")
    mmMessage.To.Add("name@domain.com")
    mmMessage.Subject = "Test Subject"
    mmMessage.BodyText = "Test Content"
    ' Attach file to the message.
    mmMessage.Attachments.Add("myfile.dat")
    ' Attach content data from a stream to the message.
    Dim stream As Stream = New FileStream("myfile.dat", FileMode.Open)
    ' The stream will be automatically closed after adding to the attachment list.
    mmMessage.Attachments.Add(New Attachment(stream, "teststream"))
    Console.WriteLine("Connecting SMTP server: {0}:{1}...", serverName, port)
    ' Connect to the server.
    client.Connect(serverName, port, securityMode)
    ' Login to the server.
    Console.WriteLine("Logging in as {0}...", user)
    client.Authenticate(user, password)
    Console.WriteLine("Sending the message with attachment...")
    client.Send(mmMessage)
    Console.WriteLine("Message sent...")
    ' Disconnect.
    Console.WriteLine("Disconnecting...")
    client.Disconnect()
Catch smtpExc As SmtpException
    MessageBox.Show(String.Format("An SMTP error occurred: {0}, ErrorStatus: {1}", smtpExc.Message, smtpExc.Status))
Catch exc As Exception
    MessageBox.Show(String.Format("An error occurred: {0}", exc.Message))
End Try

How to use GMAIL Account to send emails

Explicit connection and Implicit connection are two secure methods to connect to a secure SMTP/SMTP/POP3 server. This topic will go in detail the Implicit connection.

Originally, a separate port was assigned to the SSL version of all these three protocols. These were 465 for SMTP/SSL, 993 for SMTP/SSL and 995 for POP3/SSL. Upon connection to this port, an SSL negotiation starts immediately and the control connection is secured. All data connections are also secured implicitly in the same way. This is similar to the approach used by HTTPS.

The code snippet below shows how to connect to the Gmail SMTP server securely using Implicit security mode and send an email using Ultimate Mail component:

C#

// Create a new instance of the SmtpClient class. 
SmtpClient client = new SmtpClient(); 
// Connect to the server. 
client.Connect("smtp.gmail.com", 465, SecurityMode.Implicit); 
// Login to the server. 
client.Authenticate("user", "password"); 
// Create a new mail message. 
MailMessage msg = new MailMessage(); 
msg.Subject = "Test Subject"; 
msg.BodyText = "Content"; 
msg.From = "from@mydomain.com"; 
msg.To = "to@somedomain.com"; 
// And send it. 
client.Send(msg); 
// Close the connection. 
client.Disconnect();

VB.NET

' Create a new instance of the SmtpClient class. 
Dim client As New SmtpClient() 
' Connect to the server. 
client.Connect("smtp.gmail.com", 465, SecurityMode.Implicit) 
' Login to the server. 
client.Authenticate("user", "password") 
' Create a new mail message. 
Dim msg As New MailMessage() 
msg.Subject = "Test Subject" 
msg.BodyText = "Content" 
msg.From = "from@mydomain.com" 
msg.To = "to@somedomain.com" 
' And send it. 
client.Send(msg) 
' Close the connection. 
client.Disconnect()