javamail 访问 21cn 邮箱

问题:

 

自己用 javamail 开发的邮件客户端无法发送 21cn.com 的邮件,但收取正常。发送时,返回如下错误:

 

553 this mail is rejected by antispam system, id=FREE-AS6-SMTP.30083.1293423367&date=2010122712

 

解决方法:

 

设置邮件头的“X-Mailer”属性的值,设置为邮件客户端的名称。设置这个属性时要注意,不要把值直接设为 outlook express 等邮件客户端对应的值,如“Microsoft Outlook Express 6.00.2900.3664”。否则邮件可能无法发送。最好把这个值设为一些自己的定义的名字,如我的就设为“EXC Mail Sender 1.0”。

 

我在测试时发现这样一个情况:我通过捕捉网络数据包,找到 outlook express 发送邮件时,把邮件的“X-Mailer”设置为:“Microsoft Outlook Express 6.00.2900.3664”,然后直接把这个值设在我的程序中,发现邮件依然发送不成功。仔细研究后发现,21cn邮局竟然在检测到邮件客户端为 outlook express 后,就会再次检测邮件的分隔符,即“boundary”的值。如果分隔符是类似于:...NextPart.... 这种格式(outlook 的邮件分隔符),则能正常发送;而 javamail 发送时,使用的分隔符是类似于: ...Part... 这种格式,即,缺少“Next”字样,这时,21cn邮局就会把邮件当做垃圾邮件而拒绝。这种检测堪称诡异!无语……

你可能感兴趣的:(Microsoft)