This guide will walk you through steps of sending a bulk email using the Python library.
Required Access Level: SendHttp
When using Elastic Email you send emails to your contacts. One of options is to send bulk emails. Bulk email can be described as a single email message send to a large group at once.
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/)
Put the below code to your file.
Load libraries using below code:
import ElasticEmail
from ElasticEmail.apis.tags import emails_api
from ElasticEmail.model.email_content import EmailContent
from ElasticEmail.model.body_part import BodyPart
from ElasticEmail.model.body_content_type import BodyContentType
from ElasticEmail.model.email_recipient import EmailRecipient
from ElasticEmail.model.email_message_data import EmailMessageData
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 bulk email.
api_instance = emails_api.EmailsApi(api_client)
First you need to specify email details:
- email recipients:
- this example demostrates merge fields usage, for each recipient
{name}
will be changed to recipient's name
- this example demostrates merge fields usage, for each recipient
- 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/emailsPost
email_message_data = EmailMessageData(
Recipients=[
EmailRecipient(
Email="johnsmith@domain.com",
Fields={
"name": "John",
},
),
],
Content=EmailContent(
body=[
BodyPart(
ContentType=BodyContentType("HTML"),
Content="<strong>Hi {name}!<strong>",
Charset="utf-8",
),
BodyPart(
ContentType=BodyContentType("PlainText"),
Content="Hi {name}!",
Charset="utf-8",
),
],
From="myemail@domain.com",
ReplyTo="myemail@domain.com",
Subject="Example email",
),
)
Use try & except block to call emails_post
method from the API to send an email:
try:
api_response = api_instance.emails_post(email_message_data)
pprint(api_response)
except ElasticEmail.ApiException as e:
print("Exception when calling EmailsApi->emails_post: %s\n" % e)
import ElasticEmail
from ElasticEmail.apis.tags import emails_api
from ElasticEmail.model.email_content import EmailContent
from ElasticEmail.model.body_part import BodyPart
from ElasticEmail.model.body_content_type import BodyContentType
from ElasticEmail.model.email_recipient import EmailRecipient
from ElasticEmail.model.email_message_data import EmailMessageData
from pprint import pprint
configuration = ElasticEmail.Configuration()
configuration.api_key['apikey'] = 'YOUR_API_KEY'
with ElasticEmail.ApiClient(configuration) as api_client:
api_instance = emails_api.EmailsApi(api_client)
email_message_data = EmailMessageData(
Recipients=[
EmailRecipient(
Email="johnsmith@domain.com",
Fields={
"name": "John",
},
),
],
Content=EmailContent(
body=[
BodyPart(
ContentType=BodyContentType("HTML"),
Content="<strong>Hi {name}!<strong>",
Charset="utf-8",
),
BodyPart(
ContentType=BodyContentType("PlainText"),
Content="Hi {name}!",
Charset="utf-8",
),
],
From="myemail@domain.com",
ReplyTo="myemail@domain.com",
Subject="Example email",
),
)
try:
api_response = api_instance.emails_post(email_message_data)
pprint(api_response)
except ElasticEmail.ApiException as e:
print("Exception when calling EmailsApi->emails_post: %s\n" % e)
python3 snippet.py