Sample code for 30+ languages & platforms
Java

Send Signed and Encrypted EDI Email (EDIFACT)

Demonstrates how to send a signed and encrypted EDI email (EDIFACT email).

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.Cert;
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();

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

        //  Build the basic EDI email where the body is the EDIFACT message:
        String ediMsg = "UNB+IATB:1+6XPPC ...";
        String name = "something";
        String filename = "something";
        String charset = "iso-8859-1";
        email.setEdifactBody(ediMsg, name, filename, charset);

        email.setSubject("This is the subject");
        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/myCertAndPrivateKey.pfx", "secret");
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        //  Load the .cer file into a certificate object.
        //  When sending S/MIME encrypted email, it is the recipient's
        //  certificate that is used for encryption.  Only the public key
        //  is needed to encrypt.  The recipient is the only
        //  one possessing the private key, and therefore is the only
        //  one able to decrypt.
        Cert cert = new Cert();
        try {
            cert.loadFromFile("/certs/recipientCert.cer");
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        //  Indicate that the email is to be sent encrypted.
        email.setSendEncrypted(true);

        //  Indicate that we want 192-bit 3DES encryption:
        email.setPkcs7CryptAlg("3des");
        email.setPkcs7KeyLength(192);

        //  Specify the certificate to be used for encryption.
        email.setEncryptCert(cert);

        //  Tell the mailman to use an opaque signature (as opposed to a detached signature)
        mailman.setOpaqueSigning(true);

        //  SMTP server (use your settings and refer to the online
        //  reference  documentation for more options)
        mailman.setSmtpHost("smtp.mymailserver.com");
        mailman.setSmtpUsername("myLogin");
        mailman.setSmtpPassword("myPassword");
        mailman.setSmtpPort(587);
        mailman.setStartTLS(true);

        //  Send the signed/encrypted EDI email
        try {
            mailman.sendEmail(email);
            System.out.println("Mail Sent!");
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
        }
    }
}