发送垃圾邮件的问题

很多人问我,这个功能需要给用户发送一封注册/激活邮件,这封邮件不要发送到用户的垃圾邮件中。

简单的说:
不能!!
不能!!
不能!!

重要事情说三遍。
复杂的说:

一封邮件在某个时刻发送到某个用户,可能不是垃圾邮件。但绝对不能保证这封邮件在未来的某个时刻发送给另外一个用户不会变成垃圾邮件。

很多人问我,这个功能发送的邮件为什么用户没有看到。

简单的说:

这个功能发送的邮件被用户邮箱屏蔽了。

复杂的说:

  1. 检查一下用户的邮箱是否正确
  1. 邮件中是否有高频垃圾词汇:例如发票,彩票,中奖,邀请
  1. 是否文字太少,图片太多
  1. 是否email中没有实质内容
  1. 是否email中只有超链接地址。
  1. 是否携带了一些可执行程序的附件
  1. 邮件内容是否过大。附件是否过大
  1. 发送方的邮件是否通过认证的邮件服务器发送
  1. 发送方的email是否已经被对方列为垃圾邮件
  1. 发送方的email中的内容是否曾被对方列为垃圾邮件
  1. 发送方的邮件服务器ip是否被加入到对方邮件的黑名单

邮件的投递机制:

应用程序 =>  本地邮件服务器网关  => 目标邮件服务器网关

假如应用程序正常投递了本地邮件服务器。不代表这邮件能从本地邮件服务器发给目标服务器,也不代表本地邮件服务器能让目标服务器接收,更不代表目标服务器能把这封邮件
展现到用户的收件箱中。每每遇到这种链式的请求感觉都是头大。

有机制降低成为垃圾邮件的几率吗?
简单说:

非垃圾内容,不套用同一个模板内容,低频率发送可以降低垃圾邮件的几率。

复杂点说:

1. 要突破反垃圾邮件规则。首先你得是非垃圾邮件。或者是还未曾出现的垃圾邮件形式。所以要创新。要不断突破,所以不要使用同一套模板内容。
2. 将本地邮件服务器的反垃圾邮件规则禁用掉。这样可以保证从你本地邮件服务的发送率是100%。
但是如果你的本地邮件服务器被列入垃圾邮件黑名单。那这个ip发出去大概率会变成垃圾邮件了。
3. 一般来说如果发送email和接收email 在同一个域名下。例如 发送者是 [email protected]  接收者是 [email protected] 那么一般都不会被邮件
服务器直接屏蔽掉。最坏的情况也就是放到垃圾邮件箱中。所以如果可以,尽量和接收者使用同一个邮件服务器。这会带来开发的难度,也无法解决企业邮箱和私人域邮箱的问题

总之,发送邮件的到达率一定不是100%。所以只要能正常收到一封邮件,就算该功能正常。就不要再纠结:为什么有的人没有正常的收到邮件?