65.9K
CodeProject is changing. Read more.
Home

Digitally Signing Emails

starIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

1.00/5 (1 vote)

Mar 29, 2008

CPOL

1 min read

viewsIcon

29344

downloadIcon

427

Digitally signing Emails using CAPICOM and CDO

Introduction

As this is my first time using C#, I thought that migrating something to C# would be the best for me to learn. Well, I happen to pick something that although portions are on the Internet, the full monte was not unless you want to pay money for it (and the code): grr. So putting it all together became the next task.

Background

I searched The Code Project first and found a useful CAPICOM class wrapper. Now I just needed to see some C# examples on sending Emails via CDO. Well there was a whole lot of that out there, so I sat down and began putting this all together.

Using the Code

I tried to make it as simple as possible (mainly because I was learning as I did it), but to use it, simply reference the DigSigs.dll in your project and do what I did below (maybe add some tags to the HTMLBody if you use it), compile it and execute it. You could do a lot more with this from a console or GUI and make it much better than it is at this point, so I will leave it to you ... enjoy!

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

namespace DSEMails
{
    class Program
    {
        static void Main(string[] args)
        {
            DigSigs.CDOEmailer email = new DigSigs.CDOEmailer();
            //
            email.To = "email address";
            email.From = "email address";
            email.CC = "email address";
            email.Signature = "name of signature";
            email.Subject = "Digital Signing Test";
            email.TheStore = "My";
            email.SMTPServer = "SMTP Server or IP Address";
            email.Body = "This is the BODY of the message!!";
            email.HTMLBody = "This is the BODY of the message!!";
            //
            email.SMTPPort = 25;           // Default Value
            email.Important = 2;           // Default Value
            email.PlainText = false;       // Default Value
            email.TimeOut = 120;           // Default Value
            email.UseMachineStore = false; // Default Value
            email.Debug = true;            // Default Value
            //
            if (email.SendTo())
            { Console.WriteLine("\nSigned and sent...\n"); }
            else
            { Console.WriteLine("\nError: Failed to send email?\n"); }
        }
    }
}

There are two classes:

  • DigSigs.CAPIWrap() which does all the signing
  • DigSigs.CDOEmailer() that is used to send the Emails

Other CodeProject Sources

As I mentioned earlier, I had help from a member of CodeProject because he had written an article about CAPICOM called CAPICOM class wrapper. Although I made a few modifications, this saved me a whole lot of time and I thank him for that!

History

  • 3/28/2008 - Initial post