前提
最近开发发送邮件功能,出现一些问题,特此记录一下。小编开发过程一直都是单元测试,可以发送成功,但是从swagger就是一直提示错误。
问题一
其实翻译一下错误,语法不对。
再加上小编出现错误的前提,功能肯定可以能用,所以怀疑对象为传输过程出现了问题。使用debug调试了一下,发现传输过程过程邮箱地址错误。因为邮件地址用含有特殊字符,所以“@”以及后面的内容没有成功传输。
解决方案
之前邮件地址当成字符串传递,现在吧邮箱地址放到Json对象中传递。
问题二
翻译一下,认证失败。
1、检查邮件账户名称和密码是否正确。(使用QQ邮箱,需要在密码的地方输入授权码)
2、判断邮件是否开启POP3以及SMTP
3、检查配置中smtpHost是否为使用邮箱服务器的主机地址。
4、检查配置中smtpPort端口号,如果没有加密则为25,加密则为465
问题三
本机发送不乱码,服务器测试环境发送邮件均为乱码
经验告诉我,乱码肯定是编码问题!
//message.setSubject(subject);
message.setSubject(MimeUtility.encodeText(subject, "UTF-8", "B"));
第一句在本机测试没有问题,服务器上乱码
第二句本机服务器上均正常!
总结
遇到问题,一定要真正理解问题的根源,减少拿着问题大海捞针的检索,从根本上提高解决问题的效率。