根據使用者需求,需要開發自動發信的系統,因此重新整理寄信程式碼並於此紀錄。
範例程式碼如下:
public class MailModel
{
public string Sender { get; set; } //寄件者
public string SenderName { get; set; } //顯示名稱
public string Recipient { get; set; } //接收者
public string RecipientName { get; set; } //顯示名稱
public string Title { get; set; } //信件標題
public string Content { get; set; } //信件內容
public string SMTP_Host { get; set; }
public int SMTP_Port { get; set; }
public List<string> Files { get; set; }
}
public void SendMail(MailModel Model)
{
MailAddress from = new MailAddress(Model.Sender, Model.SenderName, Encoding.UTF8); //地址, 顯示名稱, 編碼方式
MailAddress to = new MailAddress(Model.Recipient, Model.RecipientName, Encoding.UTF8); //地址, 顯示名稱
MailMessage message = new MailMessage(from, to); //MailMessage(寄信者, 收信者)
//message.From = new MailAddress(Model.Sender, Model.SenderName, Encoding.UTF8);
message.BodyEncoding = Encoding.UTF8; //E-mail編碼
message.Subject = Model.Title; //E-mail主旨
message.SubjectEncoding = Encoding.UTF8; //設定信箱主旨編碼方式
message.Body = Model.Content; //E-mail內容
message.BodyEncoding = Encoding.UTF8; //設定信箱內容編碼方式
message.IsBodyHtml = true; //啟用 HTML 格式
message.Priority = MailPriority.Normal; //設定優先權 MailPriority.Hight 會設為重要信件
//message.Headers.Add("Return-Path", "*****@*****.*****"); //退信位置
//附加檔案
if (Model.Files != null && Model.Files.Count > 0)
{
foreach (string file in Model.Files)
{
message.Attachments.Add(new Attachment(file)); //加入附加檔案
}
}
SmtpClient smtpClient = new SmtpClient(Model.SMTP_Host, Model.SMTP_Port); //設定E-mail Server和port
smtpClient.EnableSsl = false; // 是否啟用 SSL,Gmial需要啟用 SSL
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; // 指定外送電子信箱的處理方式
//smtpClient.Credentials = new System.Net.NetworkCredential("Account","Password");
//利用帳號/密碼取得 Smtp 伺服器的憑證
try
{
smtpClient.Send(message);// 發送
smtpClient.Dispose();
}
catch (Exception ex)
{
//無法使用信箱。 伺服器回應為: User (*****@*****.*****) unknown.
//Console.WriteLine("Exception caught in XXXX: {0}",ex.ToString());
//錯誤處理和紀錄
}
message.Dispose();//放掉宣告出來的MailMessage
}
嘗試以自己的角度來整理並紀錄,也許會對一些人有幫助。
文章有錯、參考聯結有漏或是連結失效..等,還請幫忙告知,謝謝。
另外參考資料中有很多更棒的文章,建議多看看。