【asp.net小札記】發郵件

public void SendMail() {
        MemoryStream ms = new MemoryStream();
        StreamWriter sw = new StreamWriter(ms);
        SmtpClient smtp = new SmtpClient(); //實例化一個SmtpClient
        smtp.DeliveryMethod = SmtpDeliveryMethod.Network; //將smtp的出站方式設爲 Network
        smtp.EnableSsl = false;//smtp服務器是否啓用SSL加密
        smtp.Host = "smtp.126.com"; //指定 smtp 服務器地址
        smtp.Port = 25;             //指定 smtp 服務器的端口,默認是25,如果採用默認端口,可省去
        //如果你的SMTP服務器不需要身份認證,則使用下面的方式,不過,目前基本沒有不需要認證的了
        smtp.UseDefaultCredentials = true;
        //如果需要認證,則用下面的方式
        smtp.Credentials = new NetworkCredential("[email protected]", "*******");
        MailMessage mm = new MailMessage(); //實例化一個郵件類
        mm.Priority = MailPriority.High; //郵件的優先級,分爲 Low, Normal, High,通常用 Normal即可
        mm.From = new MailAddress("[email protected]", "導出數據", Encoding.GetEncoding(936));
        //收件方看到的郵件來源;
        //第一個參數是發信人郵件地址
        //第二參數是發信人顯示的名稱
        //第三個參數是 第二個參數所使用的編碼,如果指定不正確,則對方收到後顯示亂碼
        //936是簡體中文的codepage值
        //注:上面的郵件來源,一定要和你登錄郵箱的帳號一致,否則會認證失敗

        //  mm.ReplyTo = new MailAddress("[email protected]", "接收郵箱", Encoding.GetEncoding(936));
        //ReplyTo 表示對方回覆郵件時默認的接收地址,即:你用一個郵箱發信,但卻用另一個來收信
        //上面後兩個參數的意義, 同 From 的意義
        //  mm.CC.Add("[email protected],[email protected],[email protected]");
        //郵件的抄送者,支持羣發,多個郵件地址之間用 半角逗號 分開

        //當然也可以用全地址,如下:
        //mm.CC.Add(new MailAddress("[email protected]", "抄送者A", Encoding.GetEncoding(936)));
        //mm.CC.Add(new MailAddress("[email protected]", "抄送者B", Encoding.GetEncoding(936)));
        //mm.CC.Add(new MailAddress("[email protected]", "抄送者C", Encoding.GetEncoding(936)));

        //     mm.Bcc.Add("[email protected],[email protected]");
        //郵件的密送者,支持羣發,多個郵件地址之間用 半角逗號 分開

        //當然也可以用全地址,如下:
        //mm.CC.Add(new MailAddress("[email protected]", "密送者D", Encoding.GetEncoding(936)));
        //mm.CC.Add(new MailAddress("[email protected]", "密送者E", Encoding.GetEncoding(936)));

        //mm.Sender = new MailAddress("[email protected]", "郵件發送者", Encoding.GetEncoding(936));

        //可以任意設置,此信息包含在郵件頭中,但並不會驗證有效性,也不會顯示給收件人
        //說實話,我不知道有啥實際作用,大家可不理會,也可不寫此項
        mm.To.Add("[email protected]");
        // mm.To.Add("[email protected],[email protected],[email protected]");
        //郵件的接收者,支持羣發,多個地址之間用 半角逗號 分開

        //當然也可以用全地址添加

        ////mm.To.Add(new MailAddress("[email protected]", "接收者g", Encoding.GetEncoding(936)));
        ////mm.To.Add(new MailAddress("[email protected]", "接收者h", Encoding.GetEncoding(936)));
        mm.Subject = "導出數據"; //郵件標題
        mm.SubjectEncoding = Encoding.GetEncoding(936);
        // 這裏非常重要,如果你的郵件標題包含中文,這裏一定要指定,否則對方收到的極有可能是亂碼。
        // 936是簡體中文的pagecode,如果是英文標題,這句可以忽略不用
        mm.IsBodyHtml = true; //郵件正文是否是HTML格式

        mm.BodyEncoding = Encoding.GetEncoding(936);       
        mm.Body = string.Format("<font color='red'> 河北大童數據導出{0} </font>", System.DateTime.Now.ToShortDateString());

        sw.WriteLine("郵件附件內容");
        sw.Flush();
        //將文件流當前的位置設爲起始
        ms.Position = 0;

        var attachment = new Attachment((Stream)ms, System.DateTime.Now.ToShortDateString() + ".txt", System.Net.Mime.MediaTypeNames.Application.Rtf);
        mm.Attachments.Add(attachment);       

        //添加附件,第二個參數,表示附件的文件類型,可以不用指定
        //可以添加多個附件
        //mm.Attachments.Add(new Attachment(@"d:b.doc"));
        smtp.Send(mm); //發送郵件,如果不返回異常, 則大功告成了。
        ms.Close();

    }

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