SmtpClient.Send Method

Definition

Sends an email message to an SMTP server for delivery. These methods block while the message is being transmitted.

Overloads

Send(MailMessage)

Sends the specified message to an SMTP server for delivery.

Send(String, String, String, String)

Sends the specified email message to an SMTP server for delivery. The message sender, recipients, subject, and message body are specified using String objects.

Send(MailMessage)

Sends the specified message to an SMTP server for delivery.

public:
 void Send(System::Net::Mail::MailMessage ^ message);
public void Send (System.Net.Mail.MailMessage message);
member this.Send : System.Net.Mail.MailMessage -> unit
Public Sub Send (message As MailMessage)

Parameters

message
MailMessage

A MailMessage that contains the message to send.

Exceptions

message is null.

This SmtpClient has another send operation already in progress.

-or-

From is null.

-or-

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

-or-

DeliveryMethod property is set to Network and Host is null.

-or-

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

-or-

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.

-or-

Authentication failed.

-or-

The operation timed out.

-or-

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

-or-

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 of the recipients in To, CC, or Bcc.

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

Examples

The following code example demonstrates using this method.

static void CreateTestMessage2( String^ server )
{
   String^ to = L"jane@contoso.com";
   String^ from = L"ben@contoso.com";
   MailMessage^ message = gcnew MailMessage( from,to );
   message->Subject = L"Using the new SMTP client.";
   message->Body = L"Using this new feature, you can send an email message from an application very easily.";
   SmtpClient^ client = gcnew SmtpClient( server );
   
   // Credentials are necessary if the server requires the client 
   // to authenticate before it will send email on the client's behalf.
   client->UseDefaultCredentials = true;
   client->Send( message );
   client->~SmtpClient();
}
public static void CreateTestMessage2(string server)
{
    string to = "jane@contoso.com";
    string from = "ben@contoso.com";
    MailMessage message = new MailMessage(from, to);
    message.Subject = "Using the new SMTP client.";
    message.Body = @"Using this new feature, you can send an email 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 email on the client's behalf.
    client.UseDefaultCredentials = true;

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

Remarks

This method blocks while the email 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 email using Send to multiple recipients and the SMTP server accepts some recipients as valid and rejects others, Send sends email to the accepted recipients and then a SmtpFailedRecipientsException is thrown (or a SmtpFailedRecipientException if only one recipient is rejected). A SmtpFailedRecipientsException contains a list of the recipients that were rejected.

Note

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.

Applies to

Send(String, String, String, String)

Sends the specified email message to an SMTP server for delivery. The message sender, recipients, subject, and message body are specified using String objects.

public:
 void Send(System::String ^ from, System::String ^ recipients, System::String ^ subject, System::String ^ body);
public void Send (string from, string recipients, string? subject, string? body);
public void Send (string from, string recipients, string subject, string body);
member this.Send : string * string * string * string -> unit
Public Sub Send (from As String, recipients As String, subject As String, body As String)

Parameters

from
String

A String that contains the address information of the message sender.

recipients
String

A String that contains the addresses that the message is sent to.

subject
String

A String that contains the subject line for the message.

body
String

A String that contains the message body.

Exceptions

from is null.

-or-

recipients is null.

from is Empty.

-or-

recipients is Empty.

This SmtpClient has another send operation already in progress.

-or-

DeliveryMethod property is set to Network and Host is null.

-or-

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

-or-

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.

-or-

Authentication failed.

-or-

The operation timed out.

-or-

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

-or-

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 of the recipients in To, CC, or Bcc.

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

Remarks

This method blocks while the email 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 email using Send to multiple recipients and the SMTP server accepts some recipients as valid and rejects others, Send sends email to the accepted recipients and then a SmtpFailedRecipientsException is thrown (or a SmtpFailedRecipientException if only one recipient is rejected). A SmtpFailedRecipientsException contains a list of the recipients that were rejected.

Note

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.

Applies to