2010-07-16 5 views
3

Existe-t-il une fonctionnalité intégrée pour MIME un fichier dans C# .Net? Ce que je cherche à faire est:C# Créer un message MIME?

  1. Convertir un fichier dans un message MIME
  2. Signer le message MIME à un PCKS 7 blob
  3. MIME PKCS 7 blob
  4. Enfin chiffrent la chose entière.

Des suggestions sur la façon dont j'irais à ce sujet (pas la partie de cryptage ou de signature, mais le MIMEing)? Qu'est-ce qui est exactement inclus dans MIMEing un fichier?

Répondre

2

Il y a un bon paquet commercial pour une somme modique: Mime4Net

+0

Si Petey accepte cette réponse, je vais attribuer les primes. Je pense qu'un paquet commercial ne sera pas ce qui est désiré, mais je ne peux pas parler pour Petey. Personnellement j'irais cette route pour obtenir quelque chose que je me sentais confiant travaillerait. – Tergiver

+0

J'ai fini par écrire mon propre analyseur MIME. Mais je vais accepter ça. –

+0

"Small" IFF vous ne voulez pas la source. – jeff7091

2

Plutôt que de traiter avec les bibliothèques de tiers, je vous suggère de regarder à la bibliothèque .NET de base. Utilisez la classe Attachment; Il a été autour depuis. NET 2.

+0

Est-il possible d'extraire le message codé MIME des classes System.Net.Mail sans l'envoyer? – Rup

+0

@Rup: excellent point. La réponse est, bien sûr, non. Au moins, pas sans creuser dans la classe MailWriter interne. J'ai évidemment mal lu la question; S'il souhaitait signer et chiffrer une pièce jointe MIME dans le cadre d'un courrier électronique, il est aussi simple que de signer et de crypter le contenu avant de le transmettre à la pièce jointe. – Randolpho

2

Autant que je sache, il n'y a pas un tel soutien dans le .NET nu. Vous devez essayer l'une des bibliothèques tierces. L'un d'eux est notre Rebex Secure Mail for .NET. le code suivant montre comment y parvenir:

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) 

(code pris du S/MIME tutorial page)