首页 > 解决方案 > DKIM 在 vb.net 中使用 MimeKit 签署电子邮件

问题描述

我正在尝试让我的网站发送 dkim 签名的电子邮件。我找到了 mimekit 并尝试实现逻辑。我使用了几个 dkim 检查器(dkim 密钥检查器邮件测试器)来验证我的 dns 记录并且它通过了正常,但是dkim 验证器以及 google 和 Outlook 在标题或页面中显示 dkim 在电子邮件中失败。上面的 dkim 验证器说:

验证签名

结果 = 无效

详细信息:身份错误

我正在使用的子程序:

Private Shared Sub DKIMSignAndSend(mailMessage As System.Net.Mail.MailMessage)
   Dim message As MimeMessage = MimeMessage.CreateFromMailMessage(mailMessage)
   Dim headersToSign() As HeaderId = New HeaderId() {HeaderId.From, HeaderId.Subject, HeaderId.Date}
   Dim domain As String = "domain.com"
   Dim selector As String = "1559659173.domain"
   Dim signer As DkimSigner = New DkimSigner(String.Format("{0}\Administration\dkim.pem", System.Web.Configuration.WebConfigurationManager.AppSettings("WebsiteDirectory")), domain, selector)
   signer.SignatureAlgorithm = DkimSignatureAlgorithm.RsaSha1
   signer.AgentOrUserIdentifier = "domain.com"
   signer.QueryMethod = "dns/txt"
   message.Prepare(EncodingConstraint.SevenBit)
   message.Sign(signer, headersToSign, DkimCanonicalizationAlgorithm.Relaxed, DkimCanonicalizationAlgorithm.Simple)

   Using client As New MailKit.Net.Smtp.SmtpClient()
      With CType(ConfigurationManager.GetSection("system.net/mailSettings/smtp"), SmtpSection)
         client.Connect(.Network.Host, .Network.Port, .Network.EnableSsl)
         client.Authenticate(.Network.UserName, .Network.Password)
      End With
      client.Send(message)
      client.Disconnect(True)
   End Using
End Sub

我传入一个 System.Net.Mail.MailMessage ,它具有 html文本替代视图和附件

谁能帮助我做错了什么?

标签: vb.netsmtpdkimmimekit

解决方案


听起来您的 Selector 或 AgentOrUserIdentifier 是错误的。

尝试 signer.AgentOrUserIdentifier = "@domain.com"


推荐阅读