Skip to content

Latest commit

 

History

History
168 lines (135 loc) · 5.51 KB

File metadata and controls

168 lines (135 loc) · 5.51 KB

Send Transactional Emails

This guide will walk you through steps of sending a transactional email using the Python library.

Required Access Level: SendHttp

What's a transactional email?

When using Elastic Email you send emails to your contacts. One of options is to send transational emails. Transactional emails can be described that they are emails generated as a response to a particular actions done by the subscriber eg. account changes, purchase receipts, other confirmations.

A transactional email have a limit of 50 maximum recipients.

Preparation

Install Python 3.

Install ElasticEmail library.

Eg. run in terminal pip install ElasticEmail to install from PyPi repository.

Create a new Python file snippet.py and open it in editor of your preference eg. PyCharm (https://www.jetbrains.com/pycharm/download/)

Let's dig into the code

Put the below code to your file.

Load libraries using below code:

import ElasticEmail
from ElasticEmail.models.email_content import EmailContent
from ElasticEmail.models.body_part import BodyPart
from ElasticEmail.models.body_content_type import BodyContentType
from ElasticEmail.models.transactional_recipient import TransactionalRecipient
from ElasticEmail.models.email_transactional_message_data import EmailTransactionalMessageData
from pprint import pprint

Generate and use your API key (remember to check a required access level).

Defining the host is optional and defaults to https://api.elasticemail.com/v4

configuration = ElasticEmail.Configuration()
configuration.api_key['apikey'] = 'YOUR_API_KEY'

Pass configuration to an api client and make it instance available under api_client name:

with ElasticEmail.ApiClient(configuration) as api_client:

Create an instance of EmailsApi that will be used to send a transactional email.

    api_instance = ElasticEmail.EmailsApi(api_client)

First you need to specify email details:

  • email recipients
  • email content:
    • body parts – in HTML, PlainText or in both
    • from email – it needs to be your validated email address
    • email subject

Find out more by checking our API's documentation: https://elasticemail.com/developers/api-documentation/rest-api#operation/emailsTransactionalPost

    email_transactional_message_data = EmailTransactionalMessageData(
        Recipients=TransactionalRecipient(
            To=[
                "johnsmith@domain.com",
            ],
        ),
        Content=EmailContent(
            Body=[
                BodyPart(
                    ContentType=BodyContentType("HTML"),
                    Content="<strong>Mail content.<strong>",
                    Charset="utf-8",
                ),
                BodyPart(
                    ContentType=BodyContentType("PlainText"),
                    Content="Mail content.",
                    Charset="utf-8",
                ),
            ],
            From="myemail@domain.com",
            ReplyTo="myemail@domain.com",
            Subject="Example transactional email",
        ),
    )

Use try & except block to call emails_transactional_post method from the API to send an email:

    try:
        # Send Transactional Email
        api_response = api_instance.emails_transactional_post(email_transactional_message_data)
        pprint(api_response)
    except ElasticEmail.ApiException as e:
        print("Exception when calling EmailsApi->emails_transactional_post: %s\n" % e)

The whole code to copy and paste:

import ElasticEmail
from ElasticEmail.models.email_content import EmailContent
from ElasticEmail.models.body_part import BodyPart
from ElasticEmail.models.body_content_type import BodyContentType
from ElasticEmail.models.transactional_recipient import TransactionalRecipient
from ElasticEmail.models.email_transactional_message_data import EmailTransactionalMessageData
from pprint import pprint

# Defining the host is optional and defaults to https://api.elasticemail.com/v4
configuration = ElasticEmail.Configuration()

# Configure API key authorization: apikey
configuration.api_key['apikey'] = 'YOUR_API_KEY'

"""
Send transactional emails
Example api call that sends transactional email.
Limit of 50 maximum recipients.
"""
with ElasticEmail.ApiClient(configuration) as api_client:
    # Create an instance of the API class
    api_instance = ElasticEmail.EmailsApi(api_client)
    email_transactional_message_data = EmailTransactionalMessageData(
        Recipients=TransactionalRecipient(
            To=[
                "johnsmith@domain.com",
            ],
        ),
        Content=EmailContent(
            Body=[
                BodyPart(
                    ContentType=BodyContentType("HTML"),
                    Content="<strong>Mail content.<strong>",
                    Charset="utf-8",
                ),
                BodyPart(
                    ContentType=BodyContentType("PlainText"),
                    Content="Mail content.",
                    Charset="utf-8",
                ),
            ],
            From="myemail@domain.com",
            ReplyTo="myemail@domain.com",
            Subject="Example transactional email",
        ),
    ) # EmailTransactionalMessageData | Email data

    try:
        # Send Transactional Email
        api_response = api_instance.emails_transactional_post(email_transactional_message_data)
        pprint(api_response)
    except ElasticEmail.ApiException as e:
        print("Exception when calling EmailsApi->emails_transactional_post: %s\n" % e)

Run the code

python3 snippet.py