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"
我正在尝试让我的网站发送经过 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"