這段時間在看網絡高級編程,對於SMTP協議C#進行了很多封裝,使我們使用起來相當方便
SMTP是英文Simple Mail Transfer Protocol的縮寫,意為簡單郵件傳輸協議,默認端口為25
在SMTP協議中,電子郵件由三部分組成,信封、首部和正文。
1) 信封
信封包括發信人的郵件地址和接收人的郵件地址,用兩條SMTP命令指明。
① MAIL FROM:<發信人的地址>,告訴SMTP服務器發信人的地址。
② RCPT TO:<收信人的地址>,告訴SMTP服務器收信人的地址。
2) 首部
首部中常用命令:
① FROM:<姓名><郵件地址>,表明郵件發送者是誰。
② TO:<姓名><郵件地址>,表明郵件接收者是誰。
③ SUBJECT:<郵件標題>,表明郵件的主題。
④ DATE:<時間>,表明發郵件的時間。
⑤ REPLY-TO:<郵件地址>,表明郵件的回復地址。
⑥ Content-Type:<郵件類型>,表明郵件包含文本、HTML超文本和附件的哪些類型。
⑦ X-Priority:<郵件優先級>,表明郵件的發送優先級。
⑧MIME-Version:<版本>,MIME的意思是Multipurpose Internet Mail Extensions,即多用途Internet郵件擴展標准,它對傳輸內容的消息、附件及其他的內容定義了格式。
3) 正文
正文是郵件的內容。首部以一個空行結束,再下面就是正文部分。
4) 結束符號
郵件以“.”結束。
對於C#發送郵件我們只需要了解幾個基本的類就行了
1) System.Net命名空間下的NetworkCredential類
NetworkCredential myCredentials = new NetworkCredential("發件人郵件地址", "密碼");//提供發件人的用戶名發密碼
MailAddress類用於提供發件人和收件人的郵件地址,常用形式為:
MailAddress from = new MailAddress("發件人郵件地址");
MailAddress to = new MailAddress("收件人郵件地址");
MailMessage類用於提供郵件的信息,包括主題、內容、附件、信息類型等,常用形式為:
MailMessage message = new MailMessage(from, to);
message.Subject = "主題";
message.SubjectEncoding = System.Text.Encoding.UTF8;
message.Body = "郵件內容";
message.BodyEncoding = System.Text.Encoding.UTF8;
Attachment類用於提供附件對象,常用形式為
Attachment attachFile = new Attachment("文件名");
message.Attachments.Add(attachFile);
5) SmtpClient類用於發送郵件,常用形式為:
SmtpClient client = new SmtpClient("郵件服務器地址");
client.Send(message);
發送郵件方法:
private void SendMail(SmtpClient client, MailAddress from, string p, MailAddress to, MailMessage message)
{
//不使用默認憑證,注意此句必須放在client.Credentials的上面
client.UseDefaultCredentials = false;
//指定用戶名和密碼
client.Credentials = new NetworkCredential(from.Address, p);
//郵件通過網絡發送到服務器
client.DeliveryMethod = SmtpDeliveryMethod.Network;
try
{
client.Send(message);
}
catch { throw; }
finally
{
//及時釋放占用資源
message.Dispose();
}
}
以上幾個類就能實現C#對SMTP協議的使用,能進行郵件的基本發送,相對來說很簡單,都不需要調用SMTP的相關命令
下面的例子就是對上面的幾個類的運用,能進行郵件的發送/Files/fujinliang/SendMailExample.rar