ivan
  • ivan
  • 100% (Exalted)
  • Administration Topic Starter
14 years ago
C#/CSharp Example

The following code demonstrates how to verify S/MIME digital signature and decrypt encrypted email.

// The following example codes demonstrate parsing S/MIME email - digital signature and decryption
// To get full sample projects, please download and install EAGetMail on your machine.
// To run it correctly, please change email server, user, password, folder, file name value to yours

using System; 
using System.Collections; 
using System.Collections.Generic; 
using System.Text; 
using System.IO; 

// Add EAGetMail namespace
using EAGetMail; 

namespace receiveemail 
{ 
    class Program 
    { 
       private static void ParseEmail(string emlFile) 
        { 
            Mail oMail = new Mail("TryIt"); 
            oMail.Load(emlFile, false); 

             if (oMail.IsEncrypted) 
            { 
                try 
                { 
                    // This email is encrypted, we decrypt it by user default certificate.
                    // You can also use specified certificate like this
                    // Certificate oCert = new Certificate();
                    // oCert.Load("c:\test.pfx", "pfxpassword",
                    // Certificate.CertificateKeyLocation.CRYPT_USER_KEYSET);
                    // oMail = oMail.Decrypt( oCert );
                    oMail = oMail.Decrypt(null); 
                } 
                catch (Exception ep) 
                { 
                    Console.WriteLine(ep.Message); 
                } 
            } 

            if (oMail.IsSigned) 
            { 
                try 
                { 
                    // This email is digital signed.
                    EAGetMail.Certificate cert = oMail.VerifySignature(); 
                    Console.WriteLine("This email contains a valid digital signature."); 

                    // You can add the certificate to your certificate storage like this
                    // cert.AddToStore(
                    // Certificate.CertificateStoreLocation.CERT_SYSTEM_STORE_CURRENT_USER,
                    // "addressbook" );
                    // Then you can use send the encrypted email back to this sender.
                } 
                catch (Exception ep) 
                { 
                    Console.WriteLine(ep.Message); 
                } 
            } 

            // Parse Sender
            Console.WriteLine("From: {0}", oMail.From.ToString()); 

            // Parse To/Recipient
            MailAddress[] addrs = oMail.To; 
            for (int i = 0; i < addrs.Length; i++) 
            { 
                Console.WriteLine("To: {0}", addrs[i].ToString()); 
            } 

            // Parse CC
            addrs = oMail.Cc; 
            for (int i = 0; i < addrs.Length; i++) 
            { 
                Console.WriteLine("To: {0}", addrs[i].ToString()); 
            } 

            // Parse subject
            Console.WriteLine("Subject: {0}", oMail.Subject); 

            // Parse Text/Plain body
            Console.WriteLine("TextBody: {0}", oMail.TextBody); 

            // Parse HTML body
            Console.WriteLine("HtmlBody: {0}", oMail.HtmlBody ); 

            // Parse attachments
            Attachment[] atts = oMail.Attachments; 
            for (int i = 0; i < atts.Length; i++) 
            { 
                Console.WriteLine("Attachment: {0}", atts[i].Name); 
            } 
        } 

        static void Main(string[] args) 
        { 
            ParseEmail( "c:\\my folder\\test.eml" ); 
        } 
    } 
} 
Click here to read original topic - full version ... 

If you have any comments or questions about above example codes, please add your comments here.
bioPack
5 years ago
Hello!
I was very interested in this example code, with its help I was able to get data about signatures in a letter in which the Bat sees nothing.
But I have a question. The thing is, I'm dealing with letters that may have more than one signature. In this case, how can I get data about all certificates?
ivan
  • ivan
  • 100% (Exalted)
  • Administration Topic Starter
5 years ago

Hello!
I was very interested in this example code, with its help I was able to get data about signatures in a letter in which the Bat sees nothing.
But I have a question. The thing is, I'm dealing with letters that may have more than one signature. In this case, how can I get data about all certificates?

Originally Posted by: bioPack 



Hi, very few email has multiple signatures, could you send an email to support@emailarchitect.net for assistance?

EXPLORE TUTORIALS

© All Rights Reserved, AIFEI Software Limited & AdminSystem Software Limited.