怎么域名密钥/器的电子邮件签字使用的C#SMTP的客户?
-
23-09-2019 - |
题
我已经写了一个程序在C#其发送电子邮件。现在我有一个要求签署出境的电子邮件使用Dominkeys/器,但我不知道该如何做到这一点。
我已经设置了所有的钥匙,但是我不知道如何获得这些和hwo,包括他们在电子邮件标题。
解决方案 6
我没有找到关于这个问题有很大帮助,但我的问题得到了通过配置SMTP服务器解决。 由于我使用第三方SMTP服务器和每个服务器都有自己的配置,我不能公布这些步骤。适当的配置后,我的SMTP自动添加DM / DKIM签名。
其他提示
有与试图做System.Net.Mail.MailMessage和System.Net.Mail.SmtpClient这是DKIM签名的一个根本问题是,为了对消息进行签名,则需要拨开SmtpClient的内部,以到散列消息体作为在生成DKIM签名报头中的步骤之一。问题是当你有不同的观点或附件因为SmtpClient将产生新的多边界每次写出打破了主体的散列并且因此DKIM签名有效性消息时间英寸
要解决这个问题,你可以使用 MimeKit 和的 MailKit 开源库用于.NET作为替代框架使用System.Net.Mail。
要的DKIM签名添加到MimeKit一个消息,你会做这样的事情:
MimeMessage message = MimeMessage.CreateFromMailMessage(mailMessage);
HeaderId[] headersToSign = new HeaderId[] { HeaderId.From, HeaderId.Subject, HeaderId.Date };
string domain = "example.net";
string selector = "brisbane";
DkimSigner signer = new DkimSigner ("C:\my-dkim-key.pem", domain, selector)
{
SignatureAlgorithm = DkimSignatureAlgorithm.RsaSha1,
AgentOrUserIdentifier = "@eng.example.com",
QueryMethod = "dns/txt",
};
// Prepare the message body to be sent over a 7bit transport (such as
// older versions of SMTP). This is VERY important because the message
// cannot be modified once we DKIM-sign our message!
//
// Note: If the SMTP server you will be sending the message over
// supports the 8BITMIME extension, then you can use
// `EncodingConstraint.EightBit` instead.
message.Prepare (EncodingConstraint.SevenBit);
message.Sign (signer, headersToSign,
DkimCanonicalizationAlgorithm.Relaxed,
DkimCanonicalizationAlgorithm.Simple);
要发送使用MailKit的消息,你会做这样的事情:
using (var client = new MailKit.Net.Smtp.SmtpClient ()) {
client.Connect ("smtp.gmail.com", 465, true);
client.Authenticate ("username", "password");
client.Send (message);
client.Disconnect (true);
}
希望有所帮助。
见 https://github.com/dmcgiv/DKIM.Net 它的标识的域关键字邮件(DKIM)实现净C#编写的 - 它使您能够MAILMESSAGE签名对象
我想也能知道 我只是找到了DKIM实现,但我不能运行SUCESSFUL -_- http://tinisles.blogspot.com/2009/ 09 /送DKIM的电子邮件从 - c.html
它不仅允许使用DKIM进行签名,也可以包括S / MIME证书,PGP证书等。 此外,它的一个非常成熟的LIB - 唯一一个我发现,把手外语(除了英语)正确,因为其完全彻底地与心中的Unicode编码
其游离和开源。
如果你是在寻找器签署的身体然后邮DKIM.NET 是伟大的。如果你是在寻找替代的风景你的消息然后我没能找到一个解决方案,并写我自己的(开放源码与通常的免责声明),可以发现在 https://github.com/yannispsarras/DKIM-AlternativeViews
我理解这是一个很老的螺纹,但是我认为它可以帮助别人。