项目中需要给用户发送邮件功能,由于各大免费邮件服务商比如qq,163等都有邮件发送限制,所以需要搭建自己的邮件服务器发送邮件。搭建邮件服务器需要对外开启25端口,aws服务器默认关闭25端口,需要申请case(比较严格,不容易通过),所以只能换物理机搭建邮件服务器,服务器搭建完毕遇到的问题,通过java mail发送邮件一直进垃圾箱,而用Foxmail却可以成功发送。通过测试及分析总结可能原因如下:
1.邮件服务器出方向25端口未开启;
解析不正确:需要在域名供应商上面去做DNS解析,需添加MX记录,dkim记录,spf记录,dmarc记录,imap记录,SMTP记录等。
3:搭建邮件服务器后需要做ip反向解析,需要ip服务商支持,有些机房不支持;
4.被反垃圾邮件组织拉入黑名单了,
一下列出几个大的组织,进入网站查询自己的邮件服务器IP是否被列入黑名单:
/
/
/
5.发送的邮件内容含有敏感词等;
6.发送内容不是html格式的,关键代码如下:
StringBuffer messageText=new StringBuffer();//内容以html格式发送,防止被当成垃圾邮件
("<span>Hi,您好:</span></br>");
("<span>你的验证码是:"+code+"</span></br>");
("<span>出于安全原因,该验证码将于10分钟后失效。请勿将验证码透露给他人。</span></br>");
((),"text/html;charset=UTF-8");
(message);
最后发现纯文本格式的邮件送达率更高,换行需要用div包起来:<div></br></div>,少用链接,图片,越简单越好。