2010-07-16 4 views
3

Есть ли встроенная функциональность для MIME-файла в C# .Net? То, что я ищу, чтобы сделать это:C# Создать MIME-сообщение?

  1. Преобразование файла в сообщение MIME
  2. Подписать MIME сообщение до pcks 7 BLOb
  3. MIME, что PKCS 7 блоб
  4. Наконец шифровать всю вещь.

Любые предложения по поводу того, как я буду заниматься этим (не для шифрования или подписи, кроме MIMEing)? Что конкретно связано с MIMEing файлом?

ответ

2

Существует хороший коммерческий пакет за небольшую плату: Mime4Net

+0

Если Пить принимает этот ответ, я присуждаю награду. Я предполагаю, что коммерческий пакет не будет желательным, но я не могу говорить за Пети. Лично я пошел бы по этому пути, чтобы получить то, что, как я чувствовал, будет работать. – Tergiver

+0

В итоге я написал свой собственный MIME Parser. Но я соглашусь с этим. –

+0

«Маленький» IFF вам не нужен источник. – jeff7091

2

Вместо сделку с сторонними библиотеками, я предлагаю вам посмотреть в библиотеку ядра .NET. Используйте класс Attachment; это было с тех пор, как .NET 2.

+0

Можно ли извлечь MIME-кодированное сообщение из классов System.Net.Mail, не отправив его? – Rup

+0

@Rup: отличная точка. Ответ, конечно, нет. По крайней мере, не обойтись во внутреннем классе MailWriter. Я, очевидно, неправильно понял вопрос; если он хочет подписать и зашифровать MIME-приложение как часть электронной почты, это так же просто, как подписание и шифрование содержимого, прежде чем передавать его в приложение. – Randolpho

2

Насколько я знаю, такой поддержки нет в голом .NET. Вы должны попробовать одну из сторонних библиотек. Один из них - наш Rebex Secure Mail for .NET. Следующий код показывает, как достичь этого:

using Rebex.Mail; 
using Rebex.Mime.Headers; 
using Rebex.Security.Certificates; 
... 

// load the sender's certificate and 
// associated private key from a file 
Certificate signer = Certificate.LoadPfx("hugo.pfx", "password"); 

// load the recipient's certificate 
Certificate recipient = Certificate.LoadDer("joe.cer"); 

// create an instance of MailMessage 
MailMessage message = new MailMessage(); 

// set its properties to desired values 
message.From = "[email protected]"; 
message.To = "[email protected]"; 
message.Subject = "This is a simple message"; 
message.BodyText = "Hello, Joe!"; 
message.BodyHtml = "Hello, <b>Joe</b>!"; 

// sign the message using Hugo's certificate 
message.Sign(signer); 

// and encrypt it using Joe's certificate 
message.Encrypt(recipient); 

// if you wanted Hugo to be able to read the message later as well, 
// you can encrypt it for Hugo as well instead - comment out the previous 
// encrypt and uncomment this one: 
// message.Encrypt(recipient, signer) 

(код взят из S/MIME tutorial page)