1. 程式人生 > >[C#]SmtpClient傳送郵件

[C#]SmtpClient傳送郵件

這幾天開發的從資料庫抓起資料處理完已郵件發出來,只實現的To的個人的傳送,To的群組,CC的個人和群組,BCC的個人和群組都沒有成功。試了好久,感覺是Exchange伺服器配置的問題,但又無法訪問Exchange的伺服器,所以暫時先放棄完善。

測試的過程中瞭解好多隻是,現在記錄一下

下面的程式碼示例演示如何通過使用傳送一封電子郵件SmtpClient, MailAddress,和MailMessage類。

public static void CreateCopyMessage(string server)
{
    MailAddress from = new MailAddress("
[email protected]", "Ben Miller"); MailAddress to = new MailAddress("[email protected]", "Jane Clayton"); MailMessage message = new MailMessage(from, to); // message.Subject = "Using the SmtpClient class."; message.Subject = "Using the SmtpClient class."; message.Body = @"Using this feature, you can send an email message from an application very easily.
"; // Add a carbon copy recipient. MailAddress copy = new MailAddress("[email protected]"); message.CC.Add(copy); SmtpClient client = new SmtpClient(server); // Include credentials if the server requires them. client.Credentials = CredentialCache.DefaultNetworkCredentials; Console.WriteLine(
"Sending an email message to {0} by using the SMTP host {1}.", to.Address, client.Host); try { client.Send(message); } catch (Exception ex) { Console.WriteLine("Exception caught in CreateCopyMessage(): {0}", ex.ToString() ); } }

MailAddress類由SmtpClientMailMessage類來儲存地址資訊的電子郵件。

郵件地址組成User名稱,Host名稱和 (可選) DisplayName。 DisplayName可以包含非 ASCII 字元,如果對它們進行編碼。

MailAddress類支援以下郵件地址格式:

  • 簡單的地址格式為[email protected]。 如果DisplayName未設定,這是生成的郵件地址格式。

  • 標準帶引號的顯示名稱格式的"display name" <[email protected]>。 如果DisplayName設定,這是生成的格式。

  • 在前後新增尖括號User名稱,Host名稱"display name" [email protected]如果這些資訊將不包含。

  • 前後新增引號DisplayNamedisplay name <[email protected]>,如果這些資訊將不包含。

  • 中支援 Unicode 字元DisplayName屬性。

  • 一個User名稱加上引號。 例如 "user name"@host

  • 在使用者名稱中的連續和尾隨點。 例如 [email protected]

  • 用括號括起來的域原義字元。 例如 <[email protected][my domain]>

  • 註釋。 例如 (comment)"display name"(comment)<(comment)user(comment)@(comment)domain(comment)>(comment)。 在傳輸之前會刪除註釋。

使用逗號來分隔的郵件地址列表中的元素。 因此,不應在列表中的帶引號的顯示名稱中使用逗號。 允許以下郵件地址:

"John, Doe" <[email protected]>, "Bob, Smith" <[email protected]>

不允許以下郵件地址:

John, Doe <[email protected]>, Bob, Smith <[email protected]>

引號可嵌入到帶引號的字串,但它們必須進行轉義。 允許以下郵件地址:

"John \"Jr\" Doe" <[email protected]>

"\"John \\\"Jr\\\" Doe\" <[email protected]>"

不允許以下郵件地址:

"John "Jr" Doe" <[email protected]>

使用者名稱時注意加引號,開頭的字串 (或以逗號) 之間的所有文字,且地址被認為是一部分DisplayName,包括註釋。 例如:

(non comment) unquoted display (non comment) name (non comment) <[email protected]>

儘管MailAddress類接受有效、 其他郵件伺服器將不會接受郵件地址的郵件地址。

MailAddress類不支援以下郵件地址格式:

  • 混合使用帶引號和不帶引號的顯示名稱。 例如 display "name" <[email protected]>

  • 組,如在 RFC 2822 第 3.4 IETF 釋出的節中定義。

  • 過時的使用者的名稱格式"user"."name"@hostuser."name"@host"user"[email protected]

MailAddress Class

https://docs.microsoft.com/zh-cn/dotnet/api/system.net.mail.mailaddress?view=netframework-4.7.2

MailMessage.CC

https://docs.microsoft.com/zh-cn/dotnet/api/system.net.mail.mailmessage.cc?view=netframework-4.7.2#System_Net_Mail_MailMessage_CC

MailMessage

https://docs.microsoft.com/zh-cn/dotnet/api/system.net.mail.mailmessage?f1url=https%3A%2F%2Fmsdn.microsoft.com%2Fquery%2Fdev15.query%3FappId%3DDev15IDEF1%26l%3DZH-CN%26k%3Dk(System.Net.Mail.MailMessage);k(TargetFrameworkMoniker-.NETFramework,Version%3Dv4.0);k(DevLang-csharp)%26rd%3Dtrue&view=netframework-4.7.2