分享令人快樂,遇到的坑經過博文分享給你們,總結解決辦法使更多的人節省寶貴的時間去幹其餘的事,因而我決定寫下了這篇博文;html
阿里雲發送SMTP郵件失敗 阿里雲服務器不能發郵件解決方法 ,第三種方法是能夠不用25端口,配置465端口阿里雲發送郵件是成功的,如今阿里雲25端口管理的很嚴要申請經過難度太大,我申請成功過,也申請失敗過,最近後面申請的都失敗了,我後面就直接用第三種方法配置465端口就能夠用安全
第一種方法:服務器
公司最近上了一臺阿里雲服務器,我部署完系統後發現郵件發送不了,啊,怎麼會發不了郵件呢?因而找緣由發現是阿里雲服務器把郵件的默認25端口給禁用掉了爲的是不讓郵件氾濫,less
好吧,因而我想怎麼去解封25端口,找了下官方的資料,看懂了可是沒有找到對應的菜單在哪裏,那個25端口解封功能隱藏的太深,費了好大個功能終因而找到了,上個圖,說下菜單的是如何點擊到25端口解封功能的,如下是解封的步驟:測試
第一步:鼠標移上右上角貴司 阿里雲帳號【南京XXXX】 上, 這個帳號就在 【簡體中文】功能左邊第一個;阿里雲
第二步:點擊【安全管控】;編碼
第三步:點擊 【25端口解封】加密
第四步:點擊【25端口解封申請】spa
第五步:填寫申請的 IP和對應的郵箱域名,這裏注意的是 服務器IP必定要是 阿里雲帳號下的服務器,域名的話,不一樣供應商不一樣的域名,客戶是本身買的阿里雲郵箱,郵箱域名是:mail.zhsiwei.com 配置是成功,qq郵箱能夠填寫 mail.qq.com就是用qq郵箱去發送郵件,qq的你們能夠去試試這個域名對不,smtp.qq.com配置申請不成功,126郵箱,雅虎郵箱,這裏就不一一羅列,能夠去對應的郵箱裏面找下就好,切記這個郵箱域名很重要配置很差審覈就通不過。.net
第六步:填寫申請表單
第七步:填寫以後肯定後就靜靜的等待阿里雲客服審覈通常最多7個工做日就行了
第二種方法:
方法來源:https://blog.csdn.net/u013571196/article/details/78376343
想到阿里雲喜歡用安全組屏蔽端口,因而我就趕忙去配置了安全規則。進站出站都配置了,結果仍是不行,而後索性把防火牆也關了,依舊不行。通過一番折騰,發現阿里自帶屏蔽25端口。簡直尷尬,後來找了阿里的一些規則文檔,發現須要申請開通屏蔽端口。可是通過諮詢了阿里工做人員,發現如今已經不開放25端口,由於什麼《互聯網信息服務管理辦法》、《中國互聯網協會反垃圾郵件規範》均對垃圾郵件進行說明與管理規範。讓我考慮SSL加密SMTP經過465端口進行發件。而後試了一波,發現465發送不了QQ郵件,嘗試了587端口成功了。
System.Net.Mail 空間的代碼以下:
public static bool SendTheMail(string strto, string subj, string bodys) { SmtpClient _smtpClient = new SmtpClient(); _smtpClient.EnableSsl = true; _smtpClient.UseDefaultCredentials = false; _smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; _smtpClient.Host = "smtp.qq.com"; _smtpClient.Port = 587; _smtpClient.Credentials = new System.Net.NetworkCredential("aaa@qq.com", "666"); //密碼不是QQ密碼,是qq帳戶設置裏面的POP3/SMTP服務生成的key MailMessage _mailMessage = new MailMessage("aaa@qq.com", "888@yeah.net"); _mailMessage.Subject = subj;//主題 _mailMessage.Body = bodys;//內容 _mailMessage.BodyEncoding = Encoding.Default;//正文編碼 _mailMessage.IsBodyHtml = true;//設置爲HTML格式 _mailMessage.Priority = MailPriority.High;//優先級 try { _smtpClient.Send(_mailMessage); Console.WriteLine("發送成功"); return true; } catch (Exception e) { Console.WriteLine("發送失敗"); throw e; } }
第三種方法:
這個方式是官方給的,主要是經過System.Web.Mail.MailMessage來實現發送,你們把這個方法放到本身的項目裏面調用就好
/// <summary>
/// 經過System.Web.Mail.MailMessage去發送,能夠不被阿里雲限制25端口的使用
/// 暫時通常都用465端口
/// </summary>
/// <param name="smtpserver">SMTP服務,譬如:smtp.126.com</param>
/// <param name="userName">發件箱</param>
/// <param name="pwd">密碼</param>
/// <param name="nickName">暱稱</param>
/// <param name="strfrom">發件箱</param>
/// <param name="strto">收件箱</param>
/// <param name="MessageSubject">主題</param>
/// <param name="MessageBody">內容</param>
/// <param name="SUpFile">附件</param>
/// <param name="port">端口</param>
/// <param name="enablessl">SSL加密</param>
/// <returns></returns>
public static bool SendWebEmail(string smtpserver, string userName, string pwd, string nickName, string strfrom, string strto,
string MessageSubject, string MessageBody, string SUpFile, int port, int enablessl = 0)
{
System.Web.Mail.MailMessage mmsg = new System.Web.Mail.MailMessage();
//郵件主題
mmsg.Subject = MessageSubject;
mmsg.BodyFormat = System.Web.Mail.MailFormat.Html;
//郵件正文
mmsg.Body = MessageBody;
//正文編碼
mmsg.BodyEncoding = Encoding.UTF8;
//優先級
mmsg.Priority = System.Web.Mail.MailPriority.High;
System.Web.Mail.MailAttachment data = null;
if (SUpFile != "")
{
SUpFile = HttpContext.Current.Server.MapPath(SUpFile);//得到附件在本地地址
System.Web.Mail.MailAttachment attachment = new System.Web.Mail.MailAttachment(SUpFile); //create the attachment
mmsg.Attachments.Add(attachment); //add the attachment
}
//發件者郵箱地址
mmsg.From = string.Format("\"{0}\"<{1}>",nickName, strfrom);
//收件人收箱地址
mmsg.To = strto;
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1");
//用戶名
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", userName);
//密碼 不是郵箱登錄密碼 而是郵箱設置POP3/SMTP 時生成的第三方客戶端受權碼
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", pwd);
//端口
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", port);
//使用SSL
mmsg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", (enablessl == 1 ? "true" : "false"));
//Smtp服務器
System.Web.Mail.SmtpMail.SmtpServer = smtpserver;
try
{
System.Web.Mail.SmtpMail.Send(mmsg);
}
catch (Exception ex)
{
LogHelper.Error(ex.ToString());
return false;
}
return true;
}
阿里雲發送SMTP郵件失敗,阿里雲服務器不能發送郵件,其中注意的是填寫的密碼不是郵箱登錄密碼 而是郵箱設置POP3/SMTP 時生成的第三方客戶端受權碼,
本身親測試過能夠用但願對你們有幫助
https://help.aliyun.com/knowledge_detail/60692.html