如果我们的代码对邮件进行了 DKIM 签名,可以直接投递到对方邮件服务器,不经过己方的邮件服务器。
合法签名(先有个合法的域名)的邮件对方能够接收,最差也能投递到垃圾箱吧,一般不会被拦截或者被对方邮件服务器直接拒收。
.Net Framework 4.5 下 C# 实现的,项目地址:
Github: https://github.com/xiangyuecn/DKIM-Smtp-csharp
.Net 下进实现 DKIM 签名比较曲折,主要是系统带的 MailMessage、SmtpClient 功能太渣了,想要个什么好功能,对不起 private。很多控制功能缺乏,讲典型的 HELO 发的是服务器名字,看.Net 源码,内部是一个属性控制的,并且通过大量的代码、读各种环境配置来给他赋了个值,最后得出的是电脑名字;但是说到提供一个配置选项。。。想改?没门。
直到
遇到了一个神器,任何类内定义的方法都可以用一个自己写的方法来替换掉,包括.Net 框架内的,完美!
DotNetDetour 顺带给他提了个issues