Prepare
本文將使用一個NuGet公開的組件來實現右鍵發送,支持多種發送方式及自定義的郵件發送源,方便大家進行快速的開發系統。
聯系作者及加群方式(激活碼在群里發放):http://www.hslcommunication.cn/Cooperation
在Visual Studio 中的NuGet管理器中可以下載安裝,也可以直接在NuGet控制台輸入下面的指令安裝:
Install-Package HslCommunication
NuGet安裝教程 http://www.cnblogs.com/dathlin/p/7705014.html
Reference
ModBus組件所有的功能類都在 HslCommunication.ModBus命名空間,所以再使用之前先添加
using HslCommunication.BasicFramework;
簡單例子
比如我們要發一條文本到指定的郵箱,只需要2行代碼就能實現,先設置發送的對象,然后進行調用方法發送。
private void userButton20_Click(object sender, EventArgs e) { // 郵件發送 SoftMail.MailSystem163.MailSendAddress = "hsl200909@163.com"; // 先填好主題,然后填內容 SoftMail.MailSystem163.SendMail("重要消息", "這是一條重要的文本"); }
然后就能在你的郵箱里看見給你發送的郵件了,整個發送方法的發送時間大致在200ms-300ms左右,或者直接使用一行代碼完成,如下代碼展示
private void userButton20_Click(object sender, EventArgs e) { // 郵件發送 SoftMail.MailSystem163.SendMail( "hsl200909@163.com", "重要信息", "這是一條重要的文本" ); }
實際效果,如下就是截圖:
如果想知道發送是否成功,需要對方法的返回結果進行判定,判定方法如下所示:
private void userButton20_Click(object sender, EventArgs e) { // 郵件發送 SoftMail.MailSystem163.MailSendAddress = "hsl200909@163.com"; if(SoftMail.MailSystem163.SendMail("重要消息", "這是一條重要的文本")) { MessageBox.Show("發送成功!"); } else { MessageBox.Show("發送失敗!"); } }
注意:所有的SendMail 方法返回一個bool變量,可以進行判斷郵件發送是否成功,本文后面的方法都省略對發送成功或是失敗的驗證
異常發送
在程序開發中,會發生各種各樣的異常,有時候需要發送異常到你的郵箱,好作為以后判斷的依據。
private void userButton20_Click(object sender, EventArgs e) { // 郵件發送 SoftMail.MailSystem163.MailSendAddress = "hsl200909@163.com"; try { int i = 0; int j = 20 / i; } catch(Exception ex) { SoftMail.MailSystem163.SendMail(ex); } }
在郵件上會收到如下的界面:
系統記錄了詳細的異常信息來方便追蹤,尤其是你的程序部署到遠端的時候,這個方法就特別奏效。
當然還可以指定額外的信息。
private void userButton20_Click(object sender, EventArgs e) { // 郵件發送 SoftMail.MailSystem163.MailSendAddress = "hsl200909@163.com"; try { int i = 0; int j = 20 / i; } catch(Exception ex) { SoftMail.MailSystem163.SendMail(ex, "當前正在做除法運算。"); } }
高級發送
如果需要發送高級文本,就是網頁格式的文本,這樣就能發送高級的樣式,下面舉例說明:
private void userButton20_Click(object sender, EventArgs e) { // 郵件發送 SoftMail.MailSystem163.MailSendAddress = "hsl200909@163.com"; SoftMail.MailSystem163.SendMail("重要消息", "<div style=\"background: blue\">測試文本</div>", true); }
這樣就能在郵件的接收方接收到比較豐富的文本。
可以看到,只要熟悉html語言,就可以實現任何豐富的文本,包括圖片鏈接,或是二進制的圖片內容直接發送。
還有一個終極發送的方法,實現任何自定義的功能:
/// <summary> /// 發送郵件的方法,需要提供完整的參數信息 /// </summary> /// <param name="addr_from">發送地址</param> /// <param name="name">發送別名</param> /// <param name="addr_to">接收地址</param> /// <param name="subject">郵件主題</param> /// <param name="body">郵件內容</param> /// <param name="priority">優先級</param> /// <param name="isHtml">郵件內容是否是HTML語言</param> /// <returns>發生是否成功,內容不正確會被視為垃圾郵件</returns> public bool SendMail(string addr_from, string name, string[] addr_to, string subject, string body, MailPriority priority, bool isHtml)
自定義發送源
上面的代碼就是使用了內置的163郵箱作為發送源,如果你想生成自己的發送源,參照下面163郵箱的創建方式
/// <summary> /// 系統提供一個默認的163郵箱發送賬號,只要更改接收地址即可發送服務,可能會被攔截 /// </summary> public static SoftMail MailSystem163 = new SoftMail( mail => { mail.Host = "smtp.163.com";//使用163的SMTP服務器發送郵件 mail.UseDefaultCredentials = true; mail.EnableSsl = true; mail.Port = 25; mail.DeliveryMethod = SmtpDeliveryMethod.Network; mail.Credentials = new System.Net.NetworkCredential("softmailsendcenter", "zxcvbnm6789");//密碼zxcvbnm1234 }, "softmailsendcenter@163.com", "hsl200909@163.com" );
參照這個來實例化你自己的發送即可。