Send Method (MailMessage)
Collapse the table of content
Expand the table of content

SmtpClient.Send Method (MailMessage)


Sends the specified message to an SMTP server for delivery.

Namespace:   System.Net.Mail
Assembly:  System (in System.dll)

public void Send(
	MailMessage message


Type: System.Net.Mail.MailMessage

A MailMessage that contains the message to send.

Exception Condition

message is null.


This SmtpClient has a SendAsync call in progress.


MailMessage.From is null.


There are no recipients specified in MailMessage.To, MailMessage.CC, and MailMessage.Bcc properties.


DeliveryMethod property is set to Network and Host is null.


DeliveryMethod property is set to Network and Host is equal to the empty string ("").


DeliveryMethod property is set to Network and Port is zero, a negative number, or greater than 65,535.


This object has been disposed.


The connection to the SMTP server failed.


Authentication failed.


The operation timed out.


EnableSsl is set to true but the DeliveryMethod property is set to SpecifiedPickupDirectory or PickupDirectoryFromIis.


EnableSsl is set to true, but the SMTP mail server did not advertise STARTTLS in the response to the EHLO command.


The message could not be delivered to one or more of the recipients in MailMessage.To, MailMessage.CC, or MailMessage.Bcc.

This method blocks while the e-mail is transmitted. You can specify a time-out value using the Timeout property to ensure that the method returns after a specified amount of time elapses.

Before calling this method, the Host and Port properties must be set either through the configuration files by setting the relevant properties, or by passing this information into the SmtpClient(String, Int32) constructor.

You cannot call this method if there is a message being sent asynchronously.

If the SMTP host requires credentials, you must set them before calling this method. To specify credentials, use the UseDefaultCredentials or Credentials properties.

If you receive an SmtpException exception, check the StatusCode property to find the reason the operation failed. The SmtpException can also contain an inner exception that indicates the reason the operation failed.

When sending e-mail using Send to multiple recipients and the SMTP server accepts some recipients as valid and rejects others, Send sends e-mail to the accepted recipients and then a SmtpFailedRecipientsException is thrown. The exception will contain a listing of the recipients that were rejected.


If the EnableSsl property is set to true, and the SMTP mail server does not advertise STARTTLS in the response to the EHLO command, then a call to the Send or SendAsync methods will throw an SmtpException.

Legacy Code Example

The following code example demonstrates using this method.

public static void CreateTestMessage2(string server)
	string to = "";
	string from = "";
	MailMessage message = new MailMessage(from, to);
	message.Subject = "Using the new SMTP client.";
	message.Body = @"Using this new feature, you can send an e-mail message from an application very easily.";
	SmtpClient client = new SmtpClient(server);
	// Credentials are necessary if the server requires the client 
	// to authenticate before it will send e-mail on the client's behalf.
	client.UseDefaultCredentials = true;

    try {
	catch (Exception ex) {
	  Console.WriteLine("Exception caught in CreateTestMessage2(): {0}", 
                  ex.ToString() );			  

to connect to the SMTP server. Associated enumeration: Connect

.NET Framework
Available since 2.0
Return to top
© 2015 Microsoft