今天在項目中需要實現一個發送郵箱的功能,來實現用戶郵箱激活功能!!! 之前採用的是個人的郵箱進行測試,一切都是很順利的,後來換成了公司的企業郵箱,遇到了一點小問題,問題如下: 發送郵件失敗,原因:命令順序不正確。 伺服器響應為:Error: need EHLO and AUTH first ! 後來 ...
今天在項目中需要實現一個發送郵箱的功能,來實現用戶郵箱激活功能!!!
之前採用的是個人的郵箱進行測試,一切都是很順利的,後來換成了公司的企業郵箱,遇到了一點小問題,問題如下:
發送郵件失敗,原因:命令順序不正確。 伺服器響應為:Error: need EHLO and AUTH first !
後來通過百度,找到了原因所在:需要先設置 EnableSsl和UseDefaultCredentials,再實例化Credentials
發送企業郵箱代碼如下:
1 /// <summary> 2 /// 發送郵箱 3 /// </summary> 4 /// <param name="mail">目的郵件地址</param> 5 /// <param name="Host">激活地址功能變數名稱</param> 6 /// <param name="UserID">用戶標識ID</param> 7 /// <param name="ActiCode">隨機生成郵箱激活碼</param> 8 public static void SendEmail(string mail, string Host, int? UserID, string ActiCode) 9 { 10 //拼接郵箱激活鏈接 11 formto = string.Format(formto, Host, UserID, ActiCode); 12 MailMessage mailMsg = new MailMessage(); 13 mailMsg.From = new MailAddress(name);//源郵件地址 ,發件人 14 mailMsg.To.Add(new MailAddress(mail));//目的郵件地址。可以有多個收件人. 15 mailMsg.Subject = "陳列專家郵箱激活驗證";//發送郵件的標題 16 mailMsg.Body = "請進行郵箱驗證,來激活你在陳列專家中用來接收相關信息的郵箱,點擊下麵的鏈接激活您的郵箱:<br><a target='_blank' style='color:#0041D3;text-decoration:underline' href='" + formto + "'>請單擊激活</a>";//發送郵件的內容 17 mailMsg.IsBodyHtml = true;//是否支持HTML 18 SmtpClient client = new SmtpClient();//smtp.163.com,smtp.qq.com,smtp.exmail.qq.com(qq企業郵箱smtp)發件人使用的郵箱的SMTP伺服器。 19 client.Host = "smtp.exmail.qq.com";//設置發送者郵箱對應的smtpserver 20 client.EnableSsl = true; 21 client.UseDefaultCredentials = false; 22 client.Credentials = new System.Net.NetworkCredential(name, upass);//指定發件人的郵箱的賬號與密碼. 23 client.DeliveryMethod = SmtpDeliveryMethod.Network; 24 try 25 { 26 client.Send(mailMsg);//排隊發送郵件. 27 } 28 catch (Exception ex) 29 { 30 throw; 31 } 32 }
調用方法:SendEmail(email, Host, AdminUser.UserID, code);
測試效果圖如下:
記一次工作中遇到的問題!