this.AddLogEntry("Creating message.");
 
// We create the message object
ActiveUp.Net.Mail.Message message = new ActiveUp.Net.Mail.Message();
 
try
{
    // We assign the sender email
    message.From.Email = this._tbFromEmail.Text;
 
    // We assign the recipient email
    message.To.Add(this._tbToEmail.Text);
 
    // We assign the subject
    message.Subject = this._tbSubject.Text;
 
    // We assign the body text
    message.BodyText.Text = this._tbBodyText.Text;
 
    message.BuildMimePartTree();
 
    // Encrypt the message. You need the recipient(s) certificate(s) (with public key only).
    X509Certificate2 recipientCertificate = new X509Certificate2(_tbRecipientCertificate.Text);
 
    CmsRecipient recipient = new CmsRecipient(recipientCertificate);
 
    // Sign the message. You need a certificate with private key.
    X509Certificate2 signerCertificate = new X509Certificate2(_tbSignerCertificate.Text, _tbSecureStringPassword.Text);
 
    CmsSigner signer = new CmsSigner(signerCertificate);
 
    message.SmimeAttachSignatureBy(signer);
 
    // We send the email using the specified SMTP server
    this.AddLogEntry("Sending message.");
 
    message.Send(this._tbSmtpServer.Text);
 
    this.AddLogEntry("Message sent successfully.");
}
 
catch (SmtpException ex)
{
    this.AddLogEntry(string.Format("Smtp Error: {0}", ex.Message));
}
 
catch (Exception ex)
{
    this.AddLogEntry(string.Format("Failed: {0}", ex.Message));
}