2017-01-27 52 views
9

Я отправляю письма пользователям со вложениями. Письма, которые не подписаны, получают .pdf-файл (около 64kb) и работают отлично.C# DKIMKeySigner Не удается открыть вложения

Однако, когда я подписываю их для других пользователей, файл PDF становится около 64 B и не может быть открыт.

Я ничего не делаю с вложениями при подписании, однако .. так что это очень странно.

Мой код для подписания:

email = SpecificMethods.DKIMSign(email); 

internal static MailMessage DKIMSign(MailMessage email) 
    { 
     var privateKey = PrivateKeySigner.Create(@"-----BEGIN RSA PRIVATE KEY----- 
     -----END RSA PRIVATE KEY-----"); 

     var domainKeySigner = new DomainKeySigner(privateKey, "***.com", "**", new string[] { "mime-version", "date", "subject", "from", "to", "content-type" }); 
     email.DomainKeySign(domainKeySigner); 

     var dkimSigner = new DkimSigner(privateKey, "***.com", "**", new string[] { "mime-version", "date", "subject", "from", "to", "content-type" }); 
     email.DkimSign(dkimSigner); 

     return email; 
    } 

И в конце концов, отправить его. Ничего особенного здесь не происходит.

Любая причина, по которой мое приложение «ломается» ??

+0

Я рекомендовал бы использовать мои [MimeKit] (https://github.com/jstedfast/MimeKit) и [MailKit] (https://github.com/jstedfast/MailKit) библиотеки для подписи сообщений с DKIM и отправки их через SMTP. – jstedfast

ответ

2

Я думаю, что вы должны изменить библиотеку, используемую для подписи сообщений или класса, используемого для отправки фактического сообщения электронной почты. Я пробовал быстро найти альтернативу System.Net.SmtpClient, но не нашел ни одного.

Вы не указать, какие DLL пакет, который вы использовали, поэтому поиск Google телепортировался меня this project

К сожалению, если вы посмотрите на Readme ...


Известные проблемы

Поскольку System.Net.Mail.SmtpClient генерирует граничные идентификаторы случайным образом, и поскольку этот код взломает SmtpClient для получения полного содержимого электронной почты перед отправкой кода не может использоваться, когда sendin g с SmtpClient и MailMessage , когда MailMessage имеет альтернативный вид или приложение.