Dkim |
public DkimSigner( string fileName, string domain, string selector, DkimSignatureAlgorithm algorithm = DkimSignatureAlgorithm.RsaSha256 )
Exception | Condition |
---|---|
ArgumentNullException | fileName is null. -or- domain is null. -or- selector is null. |
ArgumentException | fileName is a zero-length string, contains only white space, or contains one or more invalid characters. |
FormatException | The file did not contain a private key. |
DirectoryNotFoundException | fileName is an invalid file path. |
FileNotFoundException | The specified file path could not be found. |
UnauthorizedAccessException | The user does not have access to read the specified file. |
IOException | An I/O error occurred. |
Creates a new DkimSigner.
Security Note |
---|
Due to the recognized weakness of the SHA-1 hash algorithm and the wide availability of the SHA-256 hash algorithm (it has been a required part of DKIM since it was originally standardized in 2007), it is recommended that RsaSha1 NOT be used. |
public static void DkimSign (MimeMessage message) { var headers = new HeaderId[] { HeaderId.From, HeaderId.Subject, HeaderId.Date }; var signer = new DkimSigner ("privatekey.pem", "example.com", "brisbane", DkimSignatureAlgorithm.RsaSha256) { HeaderCanonicalizationAlgorithm = DkimCanonicalizationAlgorithm.Simple, BodyCanonicalizationAlgorithm = DkimCanonicalizationAlgorithm.Simple, AgentOrUserIdentifier = "@eng.example.com", QueryMethod = "dns/txt", }; // Prepare the message body to be sent over a 7bit transport (such as older versions of SMTP). // 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); signer.Sign (message, headers); }