The SocketLabs Email Delivery Python library allows you to easily send email messages via the SocketLabs Injection API. The library makes it easy to build and send any type of message supported by the API, from a simple message to a single recipient all the way to a complex bulk message sent to a group of recipients with unique merge data per recipient.
Table of Contents
Prerequisites and Installation
Prerequisites
- A supported Python version (3.4, 3.5, 3.6, 3.7, 3.8)
- A SocketLabs account. If you don't have one yet, you can sign up for a free account to get started.
Installation
pip
pip install socketlabs-injectionapi
From a local archive using pip
You can just download the package and install from a local archive file.
socketlabs_injectionapi-1.4.3.tar.gz
pip install <path>/socketlabs_injectionapi-1.4.0.tar.gz
From git using pip
pip install git+https://github.com/socketlabs/socketlabs-python.git#egg=socketlabs_injectionapi
For more information please see the Installing Packages tutorial
Getting Started
Obtaining your API Key and SocketLabs ServerId number
In order to get started, you'll need to enable the Injection API feature in the SocketLabs Control Panel.
Once logged in, navigate to your SocketLabs server's dashboard (if you only have one server on your account you'll be taken here immediately after logging in).
Make note of your 4 or 5 digit ServerId number, as you'll need this along with
your API key in order to use the Injection API.
To enable the Injection API, click on the "For Developers" dropdown on the top-level navigation, then choose the "Configure HTTP Injection API" option.
Once here, you can enable the feature by choosing the "Enabled" option in the
dropdown. Enabling the feature will also generate your API key, which you'll
need (along with your ServerId) to start using the API. Be sure to click the
"Update" button to save your changes once you are finished.
Basic Message
A basic message is an email message like you'd send from a personal email client such as Outlook.
A basic message can have many recipients, including multiple To addresses, CC addresses, and even BCC addresses.
You can also send a file attachment in a basic message.
from socketlabs.injectionapi import SocketLabsClient
from socketlabs.injectionapi.message.basicmessage import BasicMessage
from socketlabs.injectionapi.message.emailaddress import EmailAddress
client = SocketLabsClient(10000, "YOUR-API-KEY");
message = BasicMessage()
message.subject = "Sending A BasicMessage"
message.html_body = "<html>This is the Html Body of my message.</html>"
message.plain_text_body = "This is the Plain Text Body of my message.";
message.from_email_address = EmailAddress("from@example.com")
message.to_email_address.append(EmailAddress("recipient1@example.com"))
message.to_email_address.append(EmailAddress("recipient2@example.com", "Recipient #2"))
message.add_cc_email_address("recipient3@example.com")
message.add_cc_email_address("recipient4@example.com", "Recipient #4")
message.add_bcc_email_address(EmailAddress("recipient5@example.com"))
message.add_bcc_email_address(EmailAddress("recipient6@example.com", "Recipient #6"))
response = client.send(message)
Bulk Message
A bulk message usually contains a single recipient per message
and is generally used to send the same content to many recipients,
optionally customizing the message via the use of MergeData.
For more information about using Merge data, please see the Injection API documentation.
from socketlabs.injectionapi import SocketLabsClient
from socketlabs.injectionapi.message.bulkmessage import BulkMessage
from socketlabs.injectionapi.message.bulkrecipient import BulkRecipient
from socketlabs.injectionapi.message.emailaddress import EmailAddress
client = SocketLabsClient(10000, "YOUR-API-KEY");
message = BulkMessage()
message.plain_text_body = "This is the body of my message sent to %%Name%%"
message.html_body = "<html>This is the HtmlBody of my message sent to %%Name%%</html>"
message.subject = "Sending a test message"
message.from_email_address = EmailAddress("from@example.com")
recipient1 = BulkRecipient("recipient1@example.com")
recipient1.add_merge_data("Name", "Recipient1")
message.add_to_recipient(recipient1)
recipient2 = BulkRecipient("recipient2@example.com", "Recipient #2")
recipient2.add_merge_data("Name", "Recipient2")
message.add_to_recipient(recipient2)
response = client.send(message)
Managing API Keys
For ease of demonstration, many of our examples include the ServerId (SOCKETLABS_SERVER_ID) and API key
(SOCKETLABS_INJECTION_API_KEY) directly in our code sample. Generally it is not considered a good practice to store
sensitive information like this directly in your code. Depending on your project type, we recommend either storing your
credentials using Environment Variables. For more information please see:
Using Environment Variables
Examples and Use Cases
In order to demonstrate the many possible use cases for the SDK, we've provided
an assortment of code examples. These examples demonstrate many different
features available to the Injection API and SDK, including using templates
created in the SocketLabs Email Designer, custom email headers, sending
attachments, sending content that is stored in an HTML file, advanced bulk
merging, and even pulling recipients from a datasource.
This example demonstrates the sending of a piece of content that was created in the
SocketLabs Email Designer. This is also known as the API Templates feature.
This example demonstrates how to read in your HTML content from an HTML file
rather than passing in a string directly.
This example demonstrates how to add a file attachment to your message.
This example demonstrates how to embed an image in your message.
This example demonstrates sending with a specific character set.
This example demonstrates how to add custom headers to your email message.
This example demonstrates how to use a proxy with your HTTP client.
This example demonstrates how to use the retry logic with your HTTP client.
Basic send async example
This example demonstrates many features of the Basic Send, including adding multiple recipients, adding message and mailing id's, and adding an embedded image.
This example demonstrates how to send a basic message with an AMP Html body.
For more information about AMP please see AMP Project
This example demonstrates the results of attempting to do a send with an invalid attachment.
This example demonstrates the results of attempting to do a send with an invalid from address.
This example demonstrates the results of attempting to do a send with invalid recipients.
This example demonstrates how to send a bulk message to multiple recipients.
This example demonstrates how to send a bulk message to multiple recipients with
unique merge data per recipient.
This example demonstrates many features of the BulkMessage()
, including
adding multiple recipients, merge data, and adding an attachment.
This example uses a mock repository class to demonstrate how you would pull
your recipients from a database and create a bulk mailing with merge data.
This example demonstrates how to send a bulk message with a specified character
set and special characters.
This example demonstrates how to send a bulk message with an AMP Html body.
For more information about AMP please see AMP Project
Version
- 1.4.3 - Adding API Key Authorization
- 1.4.0 - Adding Metadata and Tags
- 1.2.1 - Adding optional retry logic for Http requests. If configured, the request will retry when certain 500 errors occur (500, 502, 503, 504)
- 1.1.1 - Adding request timeout value on the client for Http requests
- 1.1.0 - Adds Amp Html Support
- 1.0.0 - Initial Release
License
The SocketLabs.EmailDelivery library and all associated code, including any code samples, are MIT Licensed.