SmtpClient.Send 方法

定義

傳送電子郵件訊息給 SMTP 伺服器進行傳遞。 在傳送訊息時,會封鎖這些方法。

多載

Send(MailMessage)

傳送指定的訊息給 SMTP 伺服器進行傳遞。

Send(String, String, String, String)

傳送指定的電子郵件訊息給 SMTP 伺服器進行傳遞。 訊息寄件者、收件者、主旨和訊息主體是使用 String 物件來指定。

Send(MailMessage)

來源:
SmtpClient.cs
來源:
SmtpClient.cs
來源:
SmtpClient.cs

傳送指定的訊息給 SMTP 伺服器進行傳遞。

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)

參數

message
MailMessage

MailMessage,包含要傳送的訊息。

例外狀況

messagenull

SmtpClient 有另一個已在進行中的傳送作業。

-或-

Fromnull

-或-

ToCCBcc 屬性中沒有指定任何收件者。

-或-

DeliveryMethod 屬性設定為 Network,且 Hostnull

-或-

DeliveryMethod 屬性設為 Network,且 Host 等於空字串 ("")。

-或-

DeliveryMethod 屬性設定為 Network ,而且 Port 為零、負數或大於 65,535。

這個物件已經過處置。

與 SMTP 伺服器的連接失敗。

-或-

驗證失敗。

-或-

作業逾時。

-或-

EnableSsl 設定為 true,但 DeliveryMethod 屬性設定為 SpecifiedPickupDirectoryPickupDirectoryFromIis

-或-

EnableSsl 設為 true, 不過 SMTP 郵件伺服器並未在對 EHLO 命令的回應中通告 STARTTLS。

無法將 message 傳遞給 ToCCBcc 中的一個收件者。

無法將 message 傳遞給 ToCCBcc 中的兩個或多個收件者。

範例

下列程式代碼範例示範如何使用這個方法。

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());
    }
}

備註

此方法會在傳送電子郵件時封鎖。 您可以使用 屬性指定逾時值 Timeout ,以確保方法會在經過指定的時間量之後傳回。

在呼叫此方法之前, Host 必須先透過組態檔來設定 和 Port 屬性,方法是設定相關屬性,或將此資訊傳遞至 SmtpClient(String, Int32) 建構函式。

如果訊息是以異步方式傳送,您就無法呼叫這個方法。

如果 SMTP 主機需要認證,您必須先設定認證,才能呼叫此方法。 若要指定認證,請使用 UseDefaultCredentialsCredentials 屬性。

如果您收到 SmtpException 例外狀況,請檢查 StatusCode 屬性以找出作業失敗的原因。 SmtpException也可以包含內部例外狀況,指出作業失敗的原因。

當使用 Send 傳送電子郵件給多個收件者,SMTP 伺服器接受某些收件者為有效,並拒絕其他收件者時, Send 會將電子郵件傳送給已接受的收件者,然後 SmtpFailedRecipientsException 擲回 (,如果 SmtpFailedRecipientException 只有一位收件者遭到拒絕,則會) 。 SmtpFailedRecipientsException包含拒絕的收件者清單。

注意

EnableSsl如果 屬性設定為true,且 SMTP 郵件伺服器不會在回應 EHLO 命令中公告 STARTTLS,則對 或 SendAsync 方法的呼叫Send會擲回 SmtpException

適用於

Send(String, String, String, String)

來源:
SmtpClient.cs
來源:
SmtpClient.cs
來源:
SmtpClient.cs

傳送指定的電子郵件訊息給 SMTP 伺服器進行傳遞。 訊息寄件者、收件者、主旨和訊息主體是使用 String 物件來指定。

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)

參數

from
String

String,包含訊息寄件者的地址資訊。

recipients
String

String,包含訊息要傳送到的地址。

subject
String

String,包含訊息的主旨行。

body
String

String,包含訊息主體。

例外狀況

fromnull

-或-

recipientsnull

fromEmpty

-或-

recipientsEmpty

SmtpClient 有另一個已在進行中的傳送作業。

-或-

DeliveryMethod 屬性設定為 Network,且 Hostnull

-或-

DeliveryMethod 屬性設為 Network,且 Host 等於空字串 ("")。

-或-

DeliveryMethod 屬性設定為 Network ,而且 Port 為零、負數或大於 65,535。

這個物件已經過處置。

與 SMTP 伺服器的連接失敗。

-或-

驗證失敗。

-或-

作業逾時。

-或-

EnableSsl 設定為 true,但 DeliveryMethod 屬性設定為 SpecifiedPickupDirectoryPickupDirectoryFromIis

-或-

EnableSsl 設為 true, 不過 SMTP 郵件伺服器並未在對 EHLO 命令的回應中通告 STARTTLS。

無法將 message 傳遞給 ToCCBcc 中的一個收件者。

無法將 message 傳遞給 ToCCBcc 中的兩個或多個收件者。

備註

此方法會在傳送電子郵件時封鎖。 您可以使用 屬性指定逾時值 Timeout ,以確保方法會在經過指定的時間量之後傳回。

在呼叫此方法之前, Host 必須先透過組態檔來設定 和 Port 屬性,方法是設定相關屬性,或將此資訊傳遞至 SmtpClient(String, Int32) 建構函式。

如果訊息是以異步方式傳送,您就無法呼叫這個方法。

如果 SMTP 主機需要認證,您必須先設定認證,才能呼叫此方法。 若要指定認證,請使用 UseDefaultCredentialsCredentials 屬性。

如果您收到 SmtpException 例外狀況,請檢查 StatusCode 屬性以找出作業失敗的原因。 SmtpException也可以包含內部例外狀況,指出作業失敗的原因。

當使用 Send 傳送電子郵件給多個收件者,SMTP 伺服器接受某些收件者為有效,並拒絕其他收件者時, Send 會將電子郵件傳送給已接受的收件者,然後 SmtpFailedRecipientsException 擲回 (,如果 SmtpFailedRecipientException 只有一位收件者遭到拒絕,則會) 。 SmtpFailedRecipientsException包含拒絕的收件者清單。

注意

EnableSsl如果 屬性設定為true,且 SMTP 郵件伺服器不會在回應 EHLO 命令中公告 STARTTLS,則對 或 SendAsync 方法的呼叫Send會擲回 SmtpException

適用於