ASP.Net: EshineASPNet教程-根據模板發送郵件

完整教程鏈接:ASP.Net: EshineASPNet-基於ASP.Net敏捷開發開源框架

發送通知郵件,激活賬戶或者修改密碼郵件是很常用的功能,這裏分享一種實現方式,我們先把要發送的郵件內容保存成模板,特別的,我們可以採用Html的格式來製作模板,並保存成Html文件,這樣可以很方便的查看顯示效果,發送的時候只需要做相應的文本替換即可。
如上面的圖所展示的一封郵件,其實就是一個html文本,完整代碼就不貼出來了,可以參考EshineASPNet\Web\email_changeemail.htm,這裏展示其中和C#代碼相關的部分。

            <strong><span class="style3">尊敬的 <%customname%> 先生/女士,</span></strong>
            <br />
            <br />
            <span class="style3">請點擊<a href="<%newemaillink%>"><%newemaillink%></a>激活新郵箱賬號。

如代碼展示,這裏我們設置了<%customname%>和<%newemaillink%>兩個代文本,後續我們會用實際的客戶姓名和激活鏈接來取代這2個地方。

    private void SendEmail(string strName, string strne)
    {
        string Subject = "修改郵箱";

        string strPath = System.Web.HttpContext.Current.Server.MapPath("~/email_changeemail.htm");
        StreamReader sr = new StreamReader(strPath, System.Text.Encoding.Default);
        StringBuilder body = new StringBuilder();
        body.Append(sr.ReadToEnd());
        sr.Close();

        body = body.Replace("<%customname%>", strName);
        body = body.Replace("<%newemaillink%>", strne);
        body = body.Replace("<%date%>", DateTime.Now.ToShortDateString());

        pc.SendsettingEMail(this.TextBox4.Text, Subject, body.ToString().Trim());
    }


    //Web.config文件中增加如下配置節:
    // <system.net>
    //    <!--如果是第三方smtp服務器,需要指定userName 和 password,並根據host指定發件人郵件地址from
    //        測試發現from值必須是userName值加上指定的smpt服務器纔行,而且是必須指定的
    //        如果是本機smtp服務器,只需指定defaultCredentials="true"即可-->
    //    <mailSettings>
    //      <smtp deliveryMethod="Network" from ="[email protected]" >
    //        <network host="smtp.126.com" port="25" userName="youremail" password="111111/>
    //      </smtp>
    //    </mailSettings>
    //  </system.net>
    public void SendsettingEMail(string strto, string strSubject, string strBody)
    {
        using (MailMessage message = new MailMessage())
        {
            message.To.Add(new MailAddress(strto)); //收件人郵箱
            message.Subject = strSubject;//郵件主題
            message.Body = strBody;  //郵件正文
            message.IsBodyHtml = true;
            message.SubjectEncoding = System.Text.Encoding.UTF8;
            message.BodyEncoding = System.Text.Encoding.UTF8;
            message.HeadersEncoding = System.Text.Encoding.UTF8;

            SmtpClient mailClient = new SmtpClient();
            mailClient.Send(message);
        }
    }

上面這段代碼就是根據模板來發送郵件的代碼,我們把剛剛需要取代文本的兩個值作爲參數傳進來。首先讀取郵件模板的html文件,然後用參數做字符串替換,最後就可以發送郵件了。
發送郵件在SendsettingEMail函數裏面,這個函數有詳細的說明,在使用這個方法前首先我們需要在Web.config文件中增加mailSettings塊,在裏面定義我們發送郵件的smtp信息以及賬戶名密碼,然後在代碼引用System.Net.Mail,並使用SmtpClient來發送郵件,這樣就可以發送了。
大家可以把激活賬戶、修改密碼等保存成一個個單獨的Html模板,在需要的地方應用不同的模板即可。

本教程代碼參考
EshineASPNet\Web\safeemail.aspx
EshineASPNet\Web\App_Code\PublicClass.cs

完整教程鏈接:ASP.Net: EshineASPNet-基於ASP.Net敏捷開發開源框架

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章