SmtpClient.Send 方法

定義

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

多載

Send(MailMessage)

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

Send(String, String, String, String)

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

Send(MailMessage)

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

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

C#
public void Send (System.Net.Mail.MailMessage message);

參數

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 中的兩個或多個收件者。

範例

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

C#
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

適用於

.NET 9 及其他版本
產品 版本
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Send(String, String, String, String)

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

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

C#
public void Send (string from, string recipients, string? subject, string? body);
C#
public void Send (string from, string recipients, string subject, string body);

參數

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

適用於

.NET 9 及其他版本
產品 版本
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1