Official MailSlurp Python SDK Email API
Project description
MailSlurp Python Client
Create real email addresses on demand. Send and receive emails and attachments from code and tests using Python.
MailSlurp is an email API service that lets you create real email addresses in code. You can then send and receive emails and attachments in Python applications and tests.
Video tutorial
Quick links
- API documentation
- Method Documentation
- PyPI Package
- Github Source
- Send email using SMTP in Python
- SMTP access details
Get started
This section describes how to get up and running with the Python client.
See the examples page for more examples and use with common frameworks such as Django, Flask and Pytest.
See the method documentation for a list of all functions or jump to common controllers below:
Create API Key
First you'll need an API Key. Create a free account and copy the key from your dashboard.
Install package
MailSlurp has an official PyPI package called mailslurp-client
. It supports Python version 2 and 3.
pip install mailslurp-client
On some systems you may need to install distutils
. If you encounter a CERTIFICATE_VERIFY_VALID
error you can install certifi
and certifi-win32
for Windows:
pip install python-certifi-win32
Configure
Once installed you can import mailslurp_client
and create a configuration with your API Key.
import mailslurp_client
configuration = mailslurp_client.Configuration()
configuration.api_key["x-api-key"] = YOUR_API_KEY
Then you can create API controller instances using the configuration:
with mailslurp_client.ApiClient(configuration) as api_client:
api_instance = mailslurp_client.InboxControllerApi(api_client)
See the controllers overview for all API methods.
Email usage examples
MailSlurp can be used to create email addresses than can send and receive real emails, SMS, and attachments in Python.
Create an email address
Create an inbox using the inbox controller:
inbox_controller = mailslurp_client.InboxControllerApi(api_client)
inbox = inbox_controller.create_inbox_with_defaults()
self.assertTrue("@mailslurp" in inbox.email_address)
You can pass options using the CreateInboxOptions
class:
options = mailslurp_client.CreateInboxDto()
options.name = "Test inbox"
options.inbox_type = "SMTP_INBOX"
inbox = inbox_controller.create_inbox_with_options(options)
self.assertTrue("@mailslurp" in inbox.email_address)
See the inbox controller for more methods.
Access inbox using SMTP
smtp_access = inbox_controller.get_imap_smtp_access(inbox_id=inbox.id)
self.assertIsNotNone(smtp_access.secure_smtp_server_host)
Send with SMTP client
# configure smtp client using access details
from smtplib import SMTP
with SMTP(
host=smtp_access.secure_smtp_server_host,
port=smtp_access.secure_smtp_server_port,
) as smtp:
msg = "Subject: Test subject
This is the body"
smtp.login(
user=smtp_access.secure_smtp_username,
password=smtp_access.secure_smtp_password,
)
smtp.sendmail(
from_addr=inbox.email_address,
to_addrs=[inbox.email_address],
msg=msg,
)
smtp.quit()
List inboxes
List inboxes using the inbox controller:
inboxes = inbox_controller.get_all_inboxes(page=0)
# pagination properties
self.assertTrue(inboxes.total_pages > 0)
self.assertTrue(inboxes.total_elements > 0)
# view contents
self.assertIsNotNone(inboxes.content[0].email_address)
Get an inbox
inbox = inbox_controller.get_inbox(inbox_id=inbox.id)
self.assertTrue("@mailslurp" in inbox.email_address)
# get by email address
inbox_by_email = inbox_controller.get_inbox_by_email_address(
inbox.email_address
)
self.assertTrue(inbox_by_email.exists)
# get by name
inbox_by_name = inbox_controller.get_inbox_by_name(inbox.name)
self.assertTrue(inbox_by_name.exists)
Delete an inbox
inbox_controller.delete_inbox(inbox_id=inbox.id)
Upload attachments
To send attachments first upload the attachments as base64 encoded strings and use the returned attachment IDs when sending.
import base64
attachment_controller = mailslurp_client.AttachmentControllerApi(api_client)
options = mailslurp_client.UploadAttachmentOptions(
filename="test.txt",
content_type="text/plain",
base64_contents=base64.b64encode("Hello world".encode("utf-8")).decode(
"utf-8"
),
)
attachment_ids = attachment_controller.upload_attachment(options)
self.assertTrue(len(attachment_ids) == 1)
Send emails
Send emails with the inbox controller:
send_options = mailslurp_client.SendEmailOptions(
to=[recipient.email_address],
subject="Hello",
body="Here is your email body",
attachments=attachment_ids,
)
sent = inbox_controller.send_email_and_confirm(
inbox_id=inbox.id, send_email_options=send_options
)
self.assertTrue(sent.sent_at is not None)
Receive emails and extract content
Use the wait for controller to wait for an expected email count to be satisfied and then return those emails.
wait_for_controller = mailslurp_client.WaitForControllerApi(api_client)
email = wait_for_controller.wait_for_latest_email(
inbox_id=inbox.id, timeout=60_000, unread_only=True
)
self.assertTrue("Hello" in email.subject)
Email content matching
matching_emails = wait_for_controller.wait_for_matching_emails(
inbox_id=inbox.id,
timeout=60_000,
unread_only=False,
match_options=mailslurp_client.MatchOptions(
conditions=[
mailslurp_client.ConditionOption(
condition="HAS_ATTACHMENTS", value="TRUE"
)
],
matches=[
mailslurp_client.MatchOption(
field="SUBJECT", should="CONTAIN", value="Hello"
)
],
),
count=1,
)
self.assertTrue(len(matching_emails) > 0)
Download attachments
attachment_content = attachment_controller.download_attachment_as_base64_encoded(email.attachments[0])
attachment_metadata = attachment_controller.get_attachment_info(email.attachments[0])
self.assertEqual(attachment_metadata.content_type, "text/plain")
Fetch email by ID
email_controller = mailslurp_client.EmailControllerApi(api_client)
email = email_controller.get_email(email_id=email_id)
self.assertTrue("Hello" in email.subject)
Verify email address
You can verify email addresses with MailSlurp. This will perform SMTP queries for the email address on your behalf.
def test_validate_email(self):
with mailslurp_client.ApiClient(configuration) as api_client:
mailserver_controller = mailslurp_client.MailServerControllerApi(api_client)
verify_options = mailslurp_client.VerifyEmailAddressOptions(email_address="test@gmail.com")
result = mailserver_controller.verify_email_address(verify_options=verify_options)
assert result.error is None
assert result.is_valid is True
SDK Documentation
See the guides page or the examples or the Method Documentation for full usage.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file mailslurp-client-15.19.22.tar.gz
.
File metadata
- Download URL: mailslurp-client-15.19.22.tar.gz
- Upload date:
- Size: 341.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.8.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4c6b3329f9088545ccf69c4f9f93c2dab391a6f3808fd4e1623b1e45dbe1ec1d |
|
MD5 | d64572e798067c93c2a5f4abe6302e1f |
|
BLAKE2b-256 | 54b24e212aa452a10bb83355e24078fbeed57641a370a3e7bae55921157b3a9b |
File details
Details for the file mailslurp_client-15.19.22-py3-none-any.whl
.
File metadata
- Download URL: mailslurp_client-15.19.22-py3-none-any.whl
- Upload date:
- Size: 775.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.8.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8037e719927b0b54cde4a6bb19e19e698ad69527b6a4ee71691ab2d0fedf0ef1 |
|
MD5 | 198727d75f4be2a6b8f961869d19d440 |
|
BLAKE2b-256 | 2c13779aa266cb89e8d05d5e9f7e2a1299ff53e2fb92f45170cdf46e63e159b9 |