java发送邮件进垃圾箱的解决办法

时间:2025-03-22 10:45:19

项目中需要给用户发送邮件功能,由于各大免费邮件服务商比如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>,少用链接,图片,越简单越好。