vb.net - 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和文本替代视图和附件。
谁能帮助我做错了什么?
解决方案
听起来您的 Selector 或 AgentOrUserIdentifier 是错误的。
尝试 signer.AgentOrUserIdentifier = "@domain.com"
推荐阅读
- flask - colab BuildError 上的 Flask 应用程序 - 无法为端点构建 url
- node.js - Node Buffer.getIntBE() 如何计算负数?
- django - Django与多个模型的外键关系
- java - 如何从 Thymeleaf 获取特定的地图值?
- reactjs - 错误:不变量失败:浏览器历史记录需要 React.js 和 Next.js 中的 DOM
- postgresql - 脚本期间未发生更新
- python - python中递归数据帧的数据分组方式
- jquery - 该脚本已在我的计算机上成功运行,但是当我将其发送给我的队友时,将无法获取任何数据
- javascript - 为什么不会通过在 sx 属性中将 display 设置为 none 来隐藏 MUI 组件?
- javascript - 括号在这个 javascript 表达式中的作用是什么?