使用Spring发送邮件常见问题汇总

1.     javax.mail.MessagingException:501 5.0.0 HELO requires domain address

出现这种错误是因为系统利用mail.jar发送邮件,需要先提取本地hostname,但由于主机上没有配置hostname,javamail 在发送helo 命令的时候找不到 hostname,直接发送helo命令 ,所以postfix返回了501 Syntax: HELO hostname 。解决方案很简单,在使用邮件服务的所有主机上配置hostname。

2.    553authentication is required

出现这种错误的原因是因为javamail中没有设置smtp身份认证,解决方案:Properties prop = newProperties();

prop.setProperty("mail.smtp.auth","true");

//省略其他属性设置

JavaMailSenderImpl.setJavaMailProperties(prop);

此处需要注意,后面的true是字符串格式,非boolean格式。

3.    邮件内容是HTML语言时中文乱码问题

设置html内容的编码格式为utf-8

<METAhttp-equiv=Content-Type content='text/html; charset=utf-8'>

初始化MimeMessageHelper辅助类时,设置"utf-8" encoding!如:
 MimeMessageHelper messageHelp =new

               MimeMessageHelper(message,true,"utf-8");

4.    邮件附件中文乱码问题

MimeUtility.encodeWord(file.getName());

 

PS: 另外在使用邮件内容是html内容的邮件中,如何生成html内容呢,看到很多人都是直接写到code中去,给人感觉非常杂乱,也不好维护,这里提供2种比较好的解决方案,一种是使用Freemarker来写邮件模板,然后把数据封装到Model中进行渲染拿到html内容,第二种是使用Spring自带的VelocityEngineUtils的mergeTemplateIntoString方法,实现;原理与Freemarker相似。但是要注意,在模板中不支持引用外部js和css,只支持将样式写在元素标签中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值