Frage

Ich habe ein Programm in C # geschrieben, die E-Mails sendet. Jetzt habe ich eine Anforderung zu unterzeichnen Outbound-E-Mails Dominkeys / DKIM, aber ich bin mir nicht sicher, wie es geht.

Ich habe alle Schlüssel einrichten, aber ich weiß nicht, wie diejenigen zu bekommen und HwO sie in dem E-Mail-Header enthalten.

War es hilfreich?

Lösung 6

i did not viel Hilfe zu diesem Thema finden, aber mein Problem durch die Konfiguration SMTP-Server lösen bekam. ich kann diese Schritte veröffentlicht, sobald i 3rd-Party-SMTP-Server bin und jeder Server seine eigene Konfiguration. nach entsprechender Konfiguration meines smtp fügt automatisch DM / DKIM-Signatur.

Andere Tipps

Es ist ein grundlegendes Problem mit dem Versuch DKIM-Signaturen mit System.Net.Mail.MailMessage und System.Net.Mail.SmtpClient zu tun, das ist, dass, um die Nachricht zu signieren, müssen Sie die Interna von SmtpClient, um stoßen der Nachrichtenkörper als einer der Schritte bei der Erzeugung des DKIM-Signatur-Header-Hash. Das Problem kommt, wenn Sie alternative Ansichten oder Anlagen, weil SmtpClient Grenzen neu mehrt jedes Mal erzeugen wird die Nachricht schreibt, die den Körper Hash bricht und damit die DKIM-Signatur Gültigkeit.

Um dies zu umgehen, können Sie die MimeKit und MailKit Open-Source-Bibliotheken für .NET als Alternative Rahmen zur Verwendung von System.Net.Mail.

Um eine DKIM-Signatur auf eine Nachricht in MimeKit hinzuzufügen, würden Sie so etwas tun:

MimeMessage message = MimeMessage.CreateFromMailMessage(mailMessage);
HeaderId[] headersToSign =  new HeaderId[] { HeaderId.From, HeaderId.Subject, HeaderId.Date };

string domain = "example.net";
string selector = "brisbane";

DkimSigner signer = new DkimSigner ("C:\my-dkim-key.pem", domain, selector) 
{
   SignatureAlgorithm = DkimSignatureAlgorithm.RsaSha1,
   AgentOrUserIdentifier = "@eng.example.com",
   QueryMethod = "dns/txt",      
};

// Prepare the message body to be sent over a 7bit transport (such as 
// older versions of SMTP). This is VERY important because the message
// cannot be modified once we DKIM-sign our message!
//
// Note: If the SMTP server you will be sending the message over 
// supports the 8BITMIME extension, then you can use
// `EncodingConstraint.EightBit` instead.
message.Prepare (EncodingConstraint.SevenBit);

message.Sign (signer, headersToSign, 
    DkimCanonicalizationAlgorithm.Relaxed, 
    DkimCanonicalizationAlgorithm.Simple);

Um die Nachricht mit MailKit zu senden, würden Sie so etwas tun:

using (var client = new MailKit.Net.Smtp.SmtpClient ()) {
    client.Connect ("smtp.gmail.com", 465, true);
    client.Authenticate ("username", "password");
    client.Send (message);
    client.Disconnect (true);
}

Ich hoffe, das hilft.

finden Sie unter https://github.com/dmcgiv/DKIM.Net es ein Domainkeys Identified ist Mail (DKIM) Implementierung für .NET in C # geschrieben -. es ermöglicht Mailmessage-Objekte zu unterschreiben

Ich möchte auch wissen, Ich finde nur ein dkim implementieren, aber ich kann nicht sucessful laufen -_- http://tinisles.blogspot.com/2009/ 09 / Senden-dkim-E-Mail-from-c.html

Verwenden http://www.mimekit.org

Nicht nur, dass es erlaubt Unterzeichnung DKIM zu verwenden, können Sie auch S / MIME-Zertifikate, PGP-Zertifikate und vieles mehr. Auch ist es ein sehr reifen lib. - Die einzige, die ich, dass Griffe Fremdsprachen gefunden habe (außer Englisch) richtig, da seine vollständig und gründlich mit Unicode im Auge codiert

Sein frei und Open Source.

Wenn Sie suchen DKIM-schreiben den Körper des Mailmessage dann DKIM.NET groß ist. Wenn Sie alternative Ansichten in Ihrer Nachricht haben suchen, dann war ich nicht die Lage, eine Lösung zu finden, und schrieb meine eigen (Open-Source mit den üblichen Haftungsausschluss), die unter https://github.com/yannispsarras/DKIM-AlternativeViews

Ich verstehe, das ist ein ziemlich alter Thread, aber ich dachte, es jemanden helfen kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top