DKIM 在 vb.net 中使用 MimeKit 签署电子邮件

DKIM Signing an email with MimeKit in vb.net

我正在尝试让我的网站发送经过 dkim 签名的电子邮件。我找到了 mimekit 并尝试实现逻辑。我使用了几个 dkim 检查器(dkim key checker and mail tester) to verify my dns record and it passes fine, but dkim validators 和 google 并且 outlook 在 headers 或页面中显示 dkim 在电子邮件中失败。上面的 dkim 验证器说:

Validating Signature

result = invalid

Details: bad identity

我正在使用的子程序:

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 文本备用视图和 附件

任何人都可以帮助我做错什么吗?

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

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