Sample code for 30+ languages & platforms
Java

Send Signed Email using PFX File

Demonstrates how to send a signed email using a digital certificate w/ private key stored in a PFX file.

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.Email;
import com.chilkatsoft.chilkat2.MailMan;

public class ChilkatExample {

    public static void main(String[] args) {
        // This example requires the Chilkat API to have been previously unlocked.
        // See Global Unlock Sample for sample code.

        // The mailman object is used for sending and receiving email.
        MailMan mailman = new MailMan();

        // Set the SMTP server.
        mailman.setSmtpHost("smtp.mymailserver.com");

        // Create a new email object
        Email email = new Email();

        email.setSubject("This email is signed");
        email.setBody("This is a digitally signed mail");
        email.setFrom("Chilkat Admin <admin@chilkatsoft.com>");
        email.addTo("Chilkat Support", "support@chilkatsoft.com");

        // Indicate that the email should be sent signed.
        email.setSendSigned(true);

        // Tell the mailman to use a PFX file as a source for locating
        // the certificate and private key required for signing.
        // The certificate chosen for signing will be the one that
        // matches the sender's email address, which also has
        // a private key.  All intermediate certs in the chain of
        // authentication, up to and including the root, will
        // be included in the signature.
        try {
            mailman.addPfxSourceFile("/pfx_files/chilkatsoft_secret.pfx", "secret");
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // Signed email can be sent in two different ways.
        // In a multipart/signed email, the signature is attached as a separate MIME part.
        // In an opaque email (signedData) the content of the email is encapsulated within the signature
        // and the email is sent as "application/pkcs7-mime".
        // Either should be fine, but some receiving systems might require one or the other..
        mailman.setOpaqueSigning(false);

        // Send a signed email.
        try {
            mailman.sendEmail(email);
            // The LastErrorText property provides information
            // even when successful.
            System.out.println(mailman.getLastErrorText());
            System.out.println("Mail Sent!");
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
        }
    }
}