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
May 24th, 2011 at 11:23
[...] How to send signed email. [...]