背景
项目中用到发送邮件功能,之前测试一直没什么问题,后面客户使用总是有问题,再次测试发现只有谷歌邮箱才有这种问题,后面换了一种方法,测试ok,这里记录下。
使用html格式发送邮件
代码
html相关代码
<imgsrc="cid:emailImg"alt="Email Logo"/>java相关代码
publicvoidsendCustomer(Stringto,Stringsubject,Stringcontent){try{// 创建message对象MimeMessagemessage=mailSender.createMimeMessage();MimeMessageHelperhelper=newMimeMessageHelper(message,true,"utf-8");// 设置邮件信息....helper.setText(content,true);StringbriEmail="email.png";StringfolderPath=System.getProperty("user.dir")+File.separator+"templates"+File.separator;StringbriEmailFile=folderPath+briEmail;try{helper.addInline("emailImg",newFileSystemResource(newFile(briEmailFile)),"image/png");}catch(Exceptione){......}// 异步执行 发送邮件mailSender.send(helper.getMimeMessage());log.info("email [ {} ] send ok",to);}catch(Exceptione){log.error("Sending email failed:"+e.getMessage());....}}注意点
- 一定要在setText之后再调用addInline
- 使用html格式发送时,很多CSS格式可能不支持,需要具体调试。
- 建议使用Table标签,这样更好兼容格式设置
- 如果需要内含外部链接,需要三方图片服务器,比如google driver,AWS3等。