Send signed email using S/MIME

// C# version

using System.Security.Cryptography.X509Certificates;
using Limilabs.Client.SMTP;
using Limilabs.Mail;
using Limilabs.Mail.Headers;

class Program
{
    static void Main(string[] args)
    {
        // Use builder object to create new email message
        MailBuilder b = new MailBuilder();
        b.From.Add(new MailBox("mail@in_the_certificate.com", "Alice"));
        b.To.Add(new MailBox("bob@mail.com", "Bob"));
        b.Subject = "Test";
        b.Html = @"<html><body>
                        This is <strong>signed</strong> message
                </body></html>";

        // Sign the message
        b.SignWith(new X509Certificate2("TestCertificate.pfx", ""));

        IMail email = b.Create();

        // Send the message
        using (Smtp smtp = new Smtp())
        {
            smtp.Connect("smtp.example.com"); // or ConnectSSL
            smtp.UseBestLogin("user", "password");

            smtp.SendMessage(email);

            smtp.Close();
        }
    }
};
' VB.NET version

Imports System.Security.Cryptography.X509Certificates
Imports Limilabs.Client.SMTP
Imports Limilabs.Mail
Imports Limilabs.Mail.Headers

Public Module Module1
    Public Sub Main(ByVal args As String())

        ' Use builder class to create new email message
        Dim b As New MailBuilder()
        b.From.Add(New MailBox("mail@in_the_certificate.com", "Alice"))
        b.[To].Add(New MailBox("bob@mail.com", "Bob"))
        b.Subject = "Test"
        b.Html = "<html><body>This is <strong>signed</strong> message</body></html>"

        ' Sign the message
        b.SignWith(New X509Certificate2("TestCertificate.pfx", ""))

        Dim email As IMail = b.Create()

        ' Send the message
        Using smtp As New Smtp()
            smtp.Connect("smtp.example.com") ' or ConnectSSL
            smtp.UseBestLogin("user", "password")

            smtp.SendMessage(email)

            smtp.Close()
        End Using
    End Sub
End Module

It’s even easier using fluent interface:

// C# version

using System.Security.Cryptography.X509Certificates;
using Fluent = Limilabs.Mail.Fluent;
using Limilabs.Mail;
using Limilabs.Mail.Headers;

class Program
{
    static void Main(string[] args)
    {
        Fluent.Mail.Html("<html><body>This is <strong>signed</strong> message</body></html>")
            .Subject("Test")
            .From(new MailBox("mail@in_the_certificate.com", "Alice"))
            .To(new MailBox("bob@mail.com", "Bob"))
            .SignWith(new X509Certificate2("TestCertificate.pfx", ""))
            .UsingNewSmtp()
            .Server("smtp.example.com")
            .OnPort(25)
            .WithCredentials("user", "password")
            .Send();
    }
};
' VB.NET version

Imports System.Security.Cryptography.X509Certificates
Imports Fluent = Limilabs.Mail.Fluent;
Imports Limilabs.Mail
Imports Limilabs.Mail.Headers

Public Module Module1
    Public Sub Main(ByVal args As String())

        Fluent.Mail.Html("<html><body>This is <strong>signed</strong> message</body></html>") _
            .Subject("Test") _
            .From(New MailBox("mail@in_the_certificate.com", "Alice")) _
            .[To](New MailBox("bob@mail.com", "Bob")) _
            .SignWith(New X509Certificate2("TestCertificate.pfx", "")) _
            .UsingNewSmtp() _
            .Server("smtp.example.com") _
            .OnPort(25) _
            .WithCredentials("user", "password") _
            .Send()
    End Sub
End Module

Tags: , , , ,

One Response to “Send signed email using S/MIME”

  1. Send signed email receive encrypted Says:

    [...] How to send signed email. [...]

Leave a Reply