Я пытаюсь заставить мой веб-сайт отправлять электронные письма, подписанные dkim.Я нашел mimekit и попытался реализовать логику.Я использовал несколько dkim checkers ( dkim key checker и mail tester ) для проверки моей записи dns, и она проходит нормально, но dkim validators и 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 и текстовые альтернативные представления и вложения .
Может кто-нибудь помочь с тем, что я делаю неправильно?