在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()));
重启部署服务,完美解决。