阿里雲服務器 發送郵箱 STMP 25端口 465端口問題 Javamail 25被禁用

 

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

今天發現剛購買的阿里雲服務器不能做爲客戶端經過STMP 25端口發送郵件html

開始在網上有說發現是JDK1.8的緣由,而後本身也把JDK1.8換到了JDK1.7 仍是不行,因此這裏排除了JDK的緣由。java

那麼問題來了,是否25端口不能鏈接適用喃?服務器

而後在終端輸入命令行 ,可測試25端口是否可鏈接。session

telnet smtp.163.com 25 

 

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

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

 

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

那麼客服的解釋一下就說明的問題:好像是將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協議的時候,順利的在服務器上發出郵件了。

相關文章
相關標籤/搜索