SmtpClient.Send 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
傳送電子郵件訊息給 SMTP 伺服器進行傳遞。 在傳送訊息時,會封鎖這些方法。
多載
Send(MailMessage) |
傳送指定的訊息給 SMTP 伺服器進行傳遞。 |
Send(String, String, String, String) |
傳送指定的電子郵件訊息給 SMTP 伺服器進行傳遞。 訊息寄件者、收件者、主旨和訊息主體是使用 String 物件來指定。 |
Send(MailMessage)
傳送指定的訊息給 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,包含要傳送的訊息。
例外狀況
message
為 null
。
這 SmtpClient 有另一個已在進行中的傳送作業。
-或-
From 為 null
。
-或-
-或-
DeliveryMethod 屬性設定為 Network,且 Host 為 null
。
-或-
DeliveryMethod 屬性設為 Network,且 Host 等於空字串 ("")。
-或-
DeliveryMethod 屬性設定為 Network ,而且 Port 為零、負數或大於 65,535。
這個物件已經過處置。
與 SMTP 伺服器的連接失敗。
-或-
驗證失敗。
-或-
作業逾時。
-或-
EnableSsl 設定為 true
,但 DeliveryMethod 屬性設定為 SpecifiedPickupDirectory 或 PickupDirectoryFromIis。
-或-
EnableSsl 設為 true,
不過 SMTP 郵件伺服器並未在對 EHLO 命令的回應中通告 STARTTLS。
範例
下列程式代碼範例示範如何使用這個方法。
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 主機需要認證,您必須先設定認證,才能呼叫此方法。 若要指定認證,請使用 UseDefaultCredentials 或 Credentials 屬性。
如果您收到 SmtpException 例外狀況,請檢查 StatusCode 屬性以找出作業失敗的原因。 SmtpException也可以包含內部例外狀況,指出作業失敗的原因。
當使用 Send 傳送電子郵件給多個收件者,SMTP 伺服器接受某些收件者為有效,並拒絕其他收件者時, Send 會將電子郵件傳送給已接受的收件者,然後 SmtpFailedRecipientsException 擲回 (,如果 SmtpFailedRecipientException 只有一位收件者遭到拒絕,則會) 。 SmtpFailedRecipientsException包含拒絕的收件者清單。
注意
EnableSsl如果 屬性設定為true
,且 SMTP 郵件伺服器不會在回應 EHLO 命令中公告 STARTTLS,則對 或 SendAsync 方法的呼叫Send會擲回 SmtpException。
適用於
Send(String, String, String, String)
傳送指定的電子郵件訊息給 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)
參數
例外狀況
這 SmtpClient 有另一個已在進行中的傳送作業。
-或-
DeliveryMethod 屬性設定為 Network,且 Host 為 null
。
-或-
DeliveryMethod 屬性設為 Network,且 Host 等於空字串 ("")。
-或-
DeliveryMethod 屬性設定為 Network ,而且 Port 為零、負數或大於 65,535。
這個物件已經過處置。
與 SMTP 伺服器的連接失敗。
-或-
驗證失敗。
-或-
作業逾時。
-或-
EnableSsl 設定為 true
,但 DeliveryMethod 屬性設定為 SpecifiedPickupDirectory 或 PickupDirectoryFromIis。
-或-
EnableSsl 設為 true,
不過 SMTP 郵件伺服器並未在對 EHLO 命令的回應中通告 STARTTLS。
備註
此方法會在傳送電子郵件時封鎖。 您可以使用 屬性指定逾時值 Timeout ,以確保方法會在經過指定的時間量之後傳回。
在呼叫此方法之前, Host 必須先透過組態檔來設定 和 Port 屬性,方法是設定相關屬性,或將此資訊傳遞至 SmtpClient(String, Int32) 建構函式。
如果訊息是以異步方式傳送,您就無法呼叫這個方法。
如果 SMTP 主機需要認證,您必須先設定認證,才能呼叫此方法。 若要指定認證,請使用 UseDefaultCredentials 或 Credentials 屬性。
如果您收到 SmtpException 例外狀況,請檢查 StatusCode 屬性以找出作業失敗的原因。 SmtpException也可以包含內部例外狀況,指出作業失敗的原因。
當使用 Send 傳送電子郵件給多個收件者,SMTP 伺服器接受某些收件者為有效,並拒絕其他收件者時, Send 會將電子郵件傳送給已接受的收件者,然後 SmtpFailedRecipientsException 擲回 (,如果 SmtpFailedRecipientException 只有一位收件者遭到拒絕,則會) 。 SmtpFailedRecipientsException包含拒絕的收件者清單。
注意
EnableSsl如果 屬性設定為true
,且 SMTP 郵件伺服器不會在回應 EHLO 命令中公告 STARTTLS,則對 或 SendAsync 方法的呼叫Send會擲回 SmtpException。