在windows中使用javamail發送郵件成功,附件也沒問題。當服務部署到linux後,發現收不到郵件。解決步驟如下:
步驟一:
ping smtp.126.com
提示:unknow host
解決:配置dns
配置完之後還是無法發送郵件,日誌報錯:cannot connect to smtp.126.com port 25
步驟二:
將25端口換成465端口。代碼如下:
properties.setProperty("mail.smtp.port", "465");
properties.setProperty("mail.smtp.socketFactory.port", "465");
properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
配置完之後可以發送郵件。但是:附件名稱和後綴不對了,在Windows下沒有這個問題
步驟三:
修改代碼:
BodyPart messageBodyPart = new MimeBodyPart();
DataSource source = new FileDataSource(filename);
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(MimeUtility.encodeText(source.getName()));
重啓部署服務,完美解決。