1. 程式人生 > 實用技巧 >阿里雲伺服器不能發郵件禁用25埠的三種解決方法

阿里雲伺服器不能發郵件禁用25埠的三種解決方法

阿里雲伺服器不能發郵件禁用25埠的三種解決方法

分享使人快樂,遇到的坑通過博文分享給大家,總結解決辦法使更多的人節省寶貴的時間去幹其他的事,於是我決定寫下了這篇博文;

阿里雲傳送SMTP郵件失敗 阿里雲伺服器不能發郵件解決方法 ,第三種方法是可以不用25埠,配置465埠阿里雲傳送郵件是成功的,現在阿里雲25埠管理的很嚴要申請通過難度太大,我申請成功過,也申請失敗過,最近後面申請的都失敗了,我後面就直接用第三種方法配置465埠就可以用

第一種方法:

公司最近上了一臺阿里雲伺服器,我部署完系統後發現郵件傳送不了,啊,怎麼會發不了郵件呢?於是找原因發現是阿里雲伺服器把郵件的預設25埠給禁用掉了為的是不讓郵件氾濫,

好吧,於是我想怎麼去解封25埠,找了下官方的資料,看懂了但是沒有找到對應的選單在哪裡,那個25埠解封功能隱藏的太深,費了好大個功能終於是找到了,上個圖,說下選單的是如何點選到25埠解封功能的,以下是解封的步驟:

第一步:滑鼠移上右上角貴司 阿里雲賬號【南京XXXX】 上, 這個賬號就在 【簡體中文】功能左邊第一個;

第二步:點選【安全管控】;

第三步:點選 【25埠解封】

第四步:點選【25埠解封申請】

第五步:填寫申請的 IP和對應的郵箱域名,這裡注意的是 伺服器IP一定要是 阿里雲賬號下的伺服器,域名的話,不同供應商不同的域名,客戶是自己買的阿里雲郵箱,郵箱域名是:mail.zhsiwei.com 配置是成功,qq郵箱可以填寫 mail.qq.com就是用qq郵箱去傳送郵件,qq的大家可以去試試這個域名對不,smtp.qq.com配置申請不成功,126郵箱,雅虎郵箱,這裡就不一一羅列,可以去對應的郵箱裡面找下就好,切記這個郵箱域名很重要配置不好稽核就通不過。

第六步:填寫申請表單

第七步:填寫之後確定後就靜靜的等待阿里雲客服稽核一般最多7個工作日就好了

第二種方法:

方法來源:https://blog.csdn.net/u013571196/article/details/78376343

想到阿里雲喜歡用安全組遮蔽埠,於是我就趕緊去配置了安全規則。進站出站都配置了,結果還是不行,然後索性把防火牆也關了,依舊不行。經過一番折騰,發現阿里自帶遮蔽25埠。簡直尷尬,後來找了阿里的一些規則文件,發現需要申請開通遮蔽埠。但是經過諮詢了阿里工作人員,發現現在已經不開放25埠,因為什麼《網際網路資訊服務管理辦法》、《中國網際網路協會反垃圾郵件規範》均對垃圾郵件進行說明與管理規範。讓我考慮SSL加密SMTP通過465埠進行發件。然後試了一波,發現465傳送不了QQ郵件,嘗試了587埠成功了。

System.Net.Mail 空間的程式碼如下:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 publicstaticboolSendTheMail(stringstrto,stringsubj,stringbodys) { SmtpClient _smtpClient =newSmtpClient(); _smtpClient.EnableSsl =true; _smtpClient.UseDefaultCredentials =false; _smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; _smtpClient.Host ="smtp.qq.com"; _smtpClient.Port = 587; _smtpClient.Credentials =newSystem.Net.NetworkCredential("[email protected]","666"); //密碼不是QQ密碼,是qq賬戶設定裡面的POP3/SMTP服務生成的key MailMessage _mailMessage =newMailMessage("[email protected]","[email protected]"); _mailMessage.Subject = subj;//主題 _mailMessage.Body = bodys;//內容 _mailMessage.BodyEncoding = Encoding.Default;//正文編碼 _mailMessage.IsBodyHtml =true;//設定為HTML格式 _mailMessage.Priority = MailPriority.High;//優先順序 try { _smtpClient.Send(_mailMessage); Console.WriteLine("傳送成功"); returntrue; } catch(Exception e) { Console.WriteLine("傳送失敗"); throwe; } }

第三種方法:

這個方式是官方給的,主要是通過System.Web.Mail.MailMessage來實現傳送,大家把這個方法放到自己的專案裡面呼叫就好

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 /// <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> publicstaticboolSendWebEmail(stringsmtpserver,stringuserName,stringpwd,stringnickName,stringstrfrom,stringstrto, stringMessageSubject,stringMessageBody,stringSUpFile,intport,intenablessl = 0) { System.Web.Mail.MailMessage mmsg =newSystem.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 =newSystem.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()); returnfalse; } returntrue; }

阿里雲傳送SMTP郵件失敗,阿里雲伺服器不能傳送郵件,其中注意的是填寫的密碼不是郵箱登陸密碼而是郵箱設定POP3/SMTP 時生成的第三方客戶端授權碼,

原文:https://www.cnblogs.com/axinno1/p/8303130.html