Sample code for 30+ languages & platforms
DataFlex

Send aes-gcm authEnvelopedData Encrypted Email

See more SMTP Examples

Note: This example requires Chilkat v10.0.0 or later

Demonstrates how to send encrypted email using 128-bit AES in GCM mode.

"AES-GCM" (Advanced Encryption Standard - Galois/Counter Mode) is a cryptographic algorithm that provides both encryption and integrity protection (authentication). When used in the context of email security with "authEnvelopedData", it often refers to a method of securely sending encrypted and authenticated email content.

Here’s a brief breakdown:

  • AES-GCM: Combines symmetric encryption (AES) with authentication, ensuring both the confidentiality and integrity of the message. It generates an authentication tag to detect any unauthorized changes.
  • authEnvelopedData: Refers to a type of structure used in secure email protocols (like S/MIME) to package encrypted content. It contains the encrypted data and associated encrypted session keys.
  • Email Security: When applied to emails, AES-GCM ensures the email content is encrypted (confidential) and also tamper-resistant (authenticated), with the encryption keys typically shared securely using asymmetric encryption (e.g., public key infrastructure, or PKI).

In short, AES-GCM with "authEnvelopedData" provides a way to encrypt and authenticate emails, making them confidential and resistant to tampering.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoMailman
    Variant vCert
    Handle hoCert
    Variant vEmail
    Handle hoEmail
    String sTemp1

    Move False To iSuccess

    // 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.
    Get Create (RefClass(cComChilkatMailMan)) To hoMailman
    If (Not(IsComObjectCreated(hoMailman))) Begin
        Send CreateComObject of hoMailman
    End

    Set ComSmtpHost Of hoMailman To "smtp.example.com"

    Set ComSmtpUsername Of hoMailman To "my_smtp_login"
    Set ComSmtpPassword Of hoMailman To "my_smtp_password"

    // The typical SMTP ports are 465 for implicit SSL/TLS or 587 for explicit SSL/TLS
    Set ComSmtpPort Of hoMailman To 465
    Set ComSmtpSsl Of hoMailman To True

    // Use the recipient's certificate for encryption.
    Get Create (RefClass(cComChilkatCert)) To hoCert
    If (Not(IsComObjectCreated(hoCert))) Begin
        Send CreateComObject of hoCert
    End
    Get ComLoadFromFile Of hoCert "c:/someDir/recipient_cert.cer" To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoCert To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get Create (RefClass(cComChilkatEmail)) To hoEmail
    If (Not(IsComObjectCreated(hoEmail))) Begin
        Send CreateComObject of hoEmail
    End

    Set ComSubject Of hoEmail To "This email is encrypted"
    Set ComBody Of hoEmail To "This is AES-GCM encrypted mail"
    Set ComFrom Of hoEmail To "Mary <mary@example1.com>"
    Get ComAddTo Of hoEmail "Joe" "joe@example.com" To iSuccess

    // Specify that AES-GCM w/ authEnvelopedData is to be used. 
    // Also specify other params..
    Set ComPkcs7CryptAlg Of hoEmail To "aes-gcm"
    Set ComPkcs7KeyLength Of hoEmail To 128
    Set ComOaepPadding Of hoEmail To True
    Set ComOaepHash Of hoEmail To "sha256"
    Set ComOaepMgfHash Of hoEmail To "sha256"

    // Indicate the email is to be sent encrypted.
    Set ComSendEncrypted Of hoEmail To True

    // Specify the certificate to be used for encryption.
    Get pvComObject of hoCert to vCert
    Get ComSetEncryptCert Of hoEmail vCert To iSuccess

    Get pvComObject of hoEmail to vEmail
    Get ComSendEmail Of hoMailman vEmail To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoMailman To sTemp1
        Showln sTemp1
    End
    Else Begin
        Showln "Mail Sent!"
    End



End_Procedure