C# 發送郵件


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"
            );

參照這個來實例化你自己的發送即可。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM