阿里雲服務器 發送郵箱 STMP 25端口 465端口問題 Javamail 25被禁用 本地可以發送郵件,部署到服務器上就發送不了


我們傳統使用的比較簡單的是 STMP 25端口收發郵件

今天發現剛購買的阿里雲服務器不能作為客戶端通過STMP 25端口發送郵件

開始在網上有說發現是JDK1.8的原因,然后自己也把JDK1.8換到了JDK1.7 還是不行,所以這里排除了JDK的原因。

那么問題來了,是否25端口不能連接適用喃?

然后在終端輸入命令行 ,可測試25端口是否可連接。

telnet smtp.163.com 25 

 

返回成功 說明你的服務器 是沒有封掉25端口的。上面的圖是我自己的電腦,當然能連通。

當換到服務器測試的時候 就會出現一只連接不成功 

 

找了很久的問題,突然在阿里雲客服社區發現一個帖子,當中有客服的解釋,當然我不是第一個遇到這個問題的人。

那么客服的解釋一下就說明的問題:好像是將25端口封掉了 時間是2016年9月底以后新購買的服務器。

那么問題找到了 那就需要將25端口換到465端口 采用SSL協議傳輸郵件。

好了貼代碼時間到:

下面這段代碼是采用SSL協議發送郵件,可向多人單人發送郵件

復制代碼
package com.aaaa.util; import java.io.File; import java.io.UnsupportedEncodingException; import java.security.Security; import java.util.Date; import java.util.Map; import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.Authenticator; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import javax.mail.internet.MimeUtility; /** * 郵件處理類 * * @author jiafuwei * */ public class MailUtil { private static final String FROM_MAIL_SMTP = "smtp.exmail.qq.com"; private static final String FROM_MAIL_NAME = "aaaaaa@qq.com"; private static final String FROM_MAIL_PASS = "xxxxxxx"; /** * 發送郵件(靈活度高,通用版) * @param from 發件人 * @param to 收件人, 多個Email以英文逗號分隔 * @param cc 抄送, 多個Email以英文逗號分隔 * @param subject 主題 * @param content 內容 * @param fileList 附件列表 * @return */ public static boolean sendMail(String to, String cc, String subject, String content, String[] fileList){ try { Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory"; final Properties p = System.getProperties() ; p.setProperty("mail.smtp.host", FROM_MAIL_SMTP); p.setProperty("mail.smtp.auth", "true"); p.setProperty("mail.smtp.user", FROM_MAIL_NAME); p.setProperty("mail.smtp.pass", FROM_MAIL_PASS); p.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY); p.setProperty("mail.smtp.socketFactory.fallback", "false"); //郵箱發送服務器端口,這里設置為465端口 p.setProperty("mail.smtp.port", "465"); p.setProperty("mail.smtp.socketFactory.port", "465"); // 根據郵件會話屬性和密碼驗證器構造一個發送郵件的session Session session = Session.getInstance(p, new Authenticator(){ protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(p.getProperty("mail.smtp.user"),p.getProperty("mail.smtp.pass")); } }); session.setDebug(true); Message message = new MimeMessage(session); //消息發送的主題  message.setSubject(subject); //接受消息的人  message.setReplyTo(InternetAddress.parse(FROM_MAIL_NAME)); //消息的發送者 message.setFrom(new InternetAddress(p.getProperty("mail.smtp.user"),"河馬評測")); // 創建郵件的接收者地址,並設置到郵件消息中 String[] split = to.split(","); InternetAddress []tos = new InternetAddress[split.length]; for (int i = 0; i < split.length; i++) { tos[i]=new InternetAddress(split[i]); } // 設置抄送人 if (cc != null && cc.length() > 0) { message.setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc)); } message.setRecipients(Message.RecipientType.TO, tos); // 消息發送的時間 message.setSentDate(new Date()); Multipart mainPart = new MimeMultipart(); // 創建一個包含HTML內容的MimeBodyPart BodyPart html = new MimeBodyPart(); // 設置HTML內容 html.setContent(content, "text/html; charset=utf-8"); mainPart.addBodyPart(html); // 將MiniMultipart對象設置為郵件內容  message.setContent(mainPart); // 設置附件 if (fileList != null && fileList.length > 0) { for (int i = 0; i < fileList.length; i++) { html = new MimeBodyPart(); FileDataSource fds = new FileDataSource(fileList[i]); html.setDataHandler(new DataHandler(fds)); html.setFileName(MimeUtility.encodeText(fds.getName(), "UTF-8", "B")); mainPart.addBodyPart(html); } } message.setContent(mainPart); message.saveChanges(); Transport.send(message); } catch (MessagingException e) { e.printStackTrace(); return false; } catch (UnsupportedEncodingException e) { e.printStackTrace(); return false; } return true; } /** * 測試Mian方法 * * @param args */ public static void main(String[] args) { String content = "<html><head><style type='text/css'>p{padding-left:50px;font-family:'楷體';font-size:20px;}table{padding-left:50px;border:0;font-family:'楷體';font-size:30px;}</style></head><body>您好:<br/><p>申請編號為"+"測試測試內容"+"的經銷商對訂單發起放棄簽約,具體信息如下:</p><table border='1' cellpadding='10' cellspacing='0'> <tr align='center'><td width='200'>經銷商</td> <td width='300'>"+"無需回復"+"</td> </tr> <tr align='center'><td>申請編號</td><td>"+"測試測試內容"+"</td></tr> <tr align='center'><td>取消時間</td><td>"+"無需回復"+"</td></tr> <tr align='center'><td>加裝GPS數量</td><td>"+"測試測試內容"+"</td></tr> <tr align='center'><td>GPS IMEI號</td><td>"+"測試測試內容"+"</td></tr><tr align='center'><td>店鋪地址</td><td>"+"測試測試內容"+"</td></tr> <tr align='center'><td>店鋪聯系人姓名</td><td>"+"測試測試內容"+"</td></tr> <tr align='center'><td>店鋪聯系人電話</td><td>"+"測試測試內容"+"</td></tr> </table><p>請及時聯系GPS相關人員,安排上門拆裝,謝謝!</p>------------------------------------------------------------------------------</body></html>"; content = "<html><head><style type='text/css'>p{padding-left:50px;font-family:'楷體';font-size:20px;}table{padding-left:50px;border:0;font-family:'楷體';font-size:30px;}</style></head><body>Hey:<br/><p>我們發現您的用戶評測報告已經出來了,趕緊來看看:</p><p>用戶:呂坤 手機號:17697182873 評測進度:3/9 (評測越多,報告越豐富哦):</p><p>河馬小提示:點擊鏈接查看報告</p><p>個人信用報告:<a href='https://axhub.im/pro/dbf03b6626db7bde/' target='_blank'>https://axhub.im/pro/dbf03b6626db7bde/</a></p><p>聯系人信息:<a href='https://axhub.im/pro/dbf03b6626db7bde/' target='_blank'>https://axhub.im/pro/dbf03b6626db7bde/</a></p></body></html>"; System.out.println(content); String[] fileList = new String[1]; fileList[0] = "d:/pac.txt"; sendMail("123456@qq.com", "jiafw@yqjr.com.cn", "測試測試", content,fileList); } }
復制代碼

 

OK當我們使用465端口SSL協議的時候,順利的在服務器上發出郵件了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM