1. 程式人生 > >linux伺服器,無法傳送郵件

linux伺服器,無法傳送郵件

問題:用java寫了發郵件的程式,在本地使用可以正常傳送,放到阿里雲伺服器上無法傳送郵件,提示
 Could not connect to SMTP host: mail.163.com, port: 25
很是鬱悶,網上的解釋鋪天蓋地,試了一個遍,最終找個一個靠譜的,看來網上的解釋,水太深了,差點淹沒了,

圖片.png

然後果斷的在程式裡改為用465埠來發送,結果仍然不行,便想到是不是防火牆的問題,於是又在防火牆裡新增規則開啟465埠,如下:

圖片.png

儲存後,service iptables restart  重啟防火牆,然而依然沒什麼用,又各種折騰了半天試了好多方法都不行,因為啟用了ssl加密方式傳送郵件,其實我現在還不是很明白箇中緣由,呵呵,總之問題算是解決了,所以趕緊記錄下來,方便以後,同時也給遇到同樣問題的朋友一個解決辦法。

阿里雲上面解釋封鎖了25埠發郵件,建議使用加密的465,測試通過了,其他不是很明白原因,(我的另一臺伺服器沒有這些麻煩,之前直接測試成功的)

具體的程式碼,在方法前面加上如下程式碼:

Properties props=new Properties(); // SSL加密 MailSSLSocketFactory sf = null;    try {      sf = new MailSSLSocketFactory();      // 設定信任所有的主機      sf.setTrustAllHosts(true);      props.put("mail.smtp.ssl.enable", "true");      props.put("mail.smtp.ssl.socketFactory", sf);    } catch (GeneralSecurityException e) {      e.printStackTrace();    } props.setProperty("mail.transport.protocol", "smtp"); props.setProperty("mail.smtp.host", "smtp.ym.163.com"); props.setProperty("mail.smtp.auth", "true");//請求身份認證