Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
MailerSend Python SDK
$ python -m pip install mailersend
pip
We recommend you to define MAILERSEND_API_KEY
environment variable in the .env
file, and use it to store the API key.
from mailersend import emails
# assigning NewEmail() without params defaults to MAILERSEND_API_KEY env var
mailer = emails.NewEmail()
# define an empty dict to populate with mail values
mail_body = {}
mail_from = {
"name": "Your Name",
"email": "your@domain.com",
}
recipients = [
{
"name": "Your Client",
"email": "your@client.com",
}
]
reply_to = {
"name": "Name",
"email": "reply@domain.com",
}
mailer.set_mail_from(mail_from, mail_body)
mailer.set_mail_to(recipients, mail_body)
mailer.set_subject("Hello!", mail_body)
mailer.set_html_content("This is the HTML content", mail_body)
mailer.set_plaintext_content("This is the text content", mail_body)
mailer.set_reply_to(reply_to, mail_body)
# using print() will also return status code and data
mailer.send(mail_body)
from mailersend import emails
mailer = emails.NewEmail("my-api-key")
# define an empty dict to populate with mail values
mail_body = {}
mail_from = {
"name": "Your Name",
"email": "your@domain.com",
}
recipients = [
{
"name": "Your Client",
"email": "your@client.com",
}
]
reply_to = {
"name": "Name",
"email": "reply@domain.com",
}
mailer.set_mail_from(mail_from, mail_body)
mailer.set_mail_to(recipients, mail_body)
mailer.set_subject("Hello!", mail_body)
mailer.set_html_content("This is the HTML content", mail_body)
mailer.set_plaintext_content("This is the text content", mail_body)
mailer.set_reply_to(reply_to, mail_body)
# using print() will also return status code and data
mailer.send(mail_body)
from mailersend import emails
from dotenv import load_dotenv
load_dotenv()
mailer = emails.NewEmail(os.getenv('MAILERSEND_API_KEY'))
# define an empty dict to populate with mail values
mail_body = {}
mail_from = {
"name": "Your Name",
"email": "your@domain.com",
}
recipients = [
{
"name": "Your Client",
"email": "your@client.com",
}
]
reply_to = {
"name": "Name",
"email": "reply@domain.com",
}
mailer.set_mail_from(mail_from, mail_body)
mailer.set_mail_to(recipients, mail_body)
mailer.set_subject("Hello!", mail_body)
mailer.set_html_content("This is the HTML content", mail_body)
mailer.set_plaintext_content("This is the text content", mail_body)
mailer.set_reply_to(reply_to, mail_body)
# using print() will also return status code and data
mailer.send(mail_body)
from mailersend import emails
from dotenv import load_dotenv
load_dotenv()
mailer = emails.NewEmail(os.getenv('MAILERSEND_API_KEY'))
# define an empty dict to populate with mail values
mail_body = {}
mail_from = {
"name": "Your Name",
"email": "your@domain.com",
}
recipients = [
{
"name": "Your Client",
"email": "your@client.com",
}
]
cc = [
{
"name": "CC",
"email": "cc@client.com"
}
]
bcc = [
{
"name": "BCC",
"email": "bcc@client.com"
}
]
mailer.set_mail_from(mail_from, mail_body)
mailer.set_mail_to(recipients, mail_body)
mailer.set_subject("Hello!", mail_body)
mailer.set_html_content("This is the HTML content", mail_body)
mailer.set_plaintext_content("This is the text content", mail_body)
mailer.set_cc_recipients(cc, mail_body)
mailer.set_bcc_recipients(bcc, mail_body)
mailer.send(mail_body)
from mailersend import emails
from dotenv import load_dotenv
load_dotenv()
mailer = emails.NewEmail(os.getenv('MAILERSEND_API_KEY'))
# define an empty dict to populate with mail values
mail_body = {}
mail_from = {
"name": "Your Name",
"email": "your@domain.com",
}
recipients = [
{
"name": "Your Client",
"email": "your@client.com",
}
]
variables = [
{
"email": "your@client.com",
"substitutions": [
{
"var": "foo",
"value": "bar"
},
]
}
]
mailer.set_mail_from(mail_from, mail_body)
mailer.set_mail_to(recipients, mail_body)
mailer.set_subject("Hello from {$company}", mail_body)
mailer.set_template("templateID", mail_body)
mailer.set_personalization(variables, mail_body)
mailer.send(mail_body)
from mailersend import emails
from dotenv import load_dotenv
load_dotenv()
mailer = emails.NewEmail(os.getenv('MAILERSEND_API_KEY'))
# define an empty dict to populate with mail values
mail_body = {}
mail_from = {
"name": "Your Name",
"email": "your@domain.com",
}
recipients = [
{
"name": "Your Client",
"email": "your@client.com",
}
]
personalization = [
{
"email": "test@mailersend.com",
"data": {
"var": "value",
"boolean": True,
"object": {
"key" : "object-value"
},
"number": 2,
"array": [
1,
2,
3
]
}
}
]
mailer.set_mail_from(mail_from, mail_body)
mailer.set_mail_to(recipients, mail_body)
mailer.set_subject("Hello from {$company}", mail_body)
mailer.set_html_content("This is the HTML content, {$name}", mail_body)
mailer.set_plaintext_content("This is the text content, {$name}", mail_body)
mailer.set_personalization(personalization, mail_body)
mailer.send(mail_body)
from mailersend import emails
import base64
from dotenv import load_dotenv
load_dotenv()
mailer = emails.NewEmail(os.getenv('MAILERSEND_API_KEY'))
# define an empty dict to populate with mail values
mail_body = {}
mail_from = {
"name": "Your Name",
"email": "your@domain.com",
}
recipients = [
{
"name": "Your Client",
"email": "your@client.com",
}
]
variables = [
{
"email": "your@client.com",
"substitutions": [
{
"var": "foo",
"value": "bar"
},
]
}
]
attachment = open('path-to-file', 'rb')
att_read = attachment.read()
att_base64 = base64.b64encode(bytes(att_read))
attachments = [
{
"id": "my-attached-file",
"filename": "file.jpg",
"content": f"{att_base64.decode('ascii')}",
"disposition": "attachment"
}
]
mailer.set_mail_from(mail_from, mail_body)
mailer.set_mail_to(recipients, mail_body)
mailer.set_subject("Hello from {$foo}", mail_body)
mailer.set_html_content("This is the HTML content, {$foo}", mail_body)
mailer.set_plaintext_content("This is the text content, {$foo}", mail_body)
mailer.set_personalization(variables, mail_body)
mailer.set_attachments(attachments, mail_body)
mailer.send(mail_body)
from mailersend import email_verification
from dotenv import load_dotenv
load_dotenv()
mailer = email_verification.NewEmailVerification(os.getenv('MAILERSEND_API_KEY'))
mailer.get_all_lists()
from mailersend import email_verification
from dotenv import load_dotenv
load_dotenv()
mailer = email_verification.NewEmailVerification(os.getenv('MAILERSEND_API_KEY'))
email_verification_list_id = 123456
mailer.get_list(email_verification_list_id)
from mailersend import email_verification
from dotenv import load_dotenv
load_dotenv()
mailer = email_verification.NewEmailVerification(os.getenv('MAILERSEND_API_KEY'))
name = "My List"
emails = [
"some@email.com",
"another@email.com"
]
mailer.create_list(name, emails)
from mailersend import email_verification
from dotenv import load_dotenv
load_dotenv()
mailer = email_verification.NewEmailVerification(os.getenv('MAILERSEND_API_KEY'))
email_verification_list_id = 123456
mailer.verify_list(email_verification_list_id)
from mailersend import email_verification
from dotenv import load_dotenv
load_dotenv()
mailer = email_verification.NewEmailVerification(os.getenv('MAILERSEND_API_KEY'))
email_verification_list_id = 123456
mailer.get_list_results(email_verification_list_id)
from mailersend import emails
from dotenv import load_dotenv
load_dotenv()
mailer = emails.NewEmail(os.getenv('MAILERSEND_API_KEY'))
mail_list = [
{
"from": {
"email": "your@domain.com",
"name": "Your Name"
},
"to": [
{
"email": "your@client.com",
"name": "Your Client"
}
],
"subject": "Subject",
"text": "This is the text content",
"html": "<p>This is the HTML content</p>",
},
{
"from": {
"email": "your@domain.com",
"name": "Your Name"
},
"to": [
{
"email": "your@client.com",
"name": "Your Client"
}
],
"subject": "Subject",
"text": "This is the text content",
"html": "<p>This is the HTML content</p>",
}
]
print(mailer.send_bulk(mail_list))
from mailersend import emails
from dotenv import load_dotenv
load_dotenv()
mailer = emails.NewEmail(os.getenv('MAILERSEND_API_KEY'))
print(mailer.get_bulk_status_by_id("bulk-email-id"))
from mailersend import activity
from dotenv import load_dotenv
load_dotenv()
mailer = activity.NewActivity(os.getenv('MAILERSEND_API_KEY'))
mailer.get_domain_activity("domain-id")
from mailersend import activity
from dotenv import load_dotenv
load_dotenv()
mailer = activity.NewActivity(os.getenv('MAILERSEND_API_KEY'))
page = 1
limit = 20
date_from = 1623073576
date_to = 1623074976
events = [
"queued",
"sent",
"delivered",
"soft-bounced",
"hard-bounced",
"junk",
"opened",
"clicked",
"unsubscribed",
"spam_complaints",
]
mailer.get_domain_activity("domain-id", page, limit, date_from, date_to, events)
from mailersend import analytics
from dotenv import load_dotenv
load_dotenv()
mailer = analytics.NewAnalytics(os.getenv('MAILERSEND_API_KEY'))
date_from = 1623073576
date_to = 1623074976
events = [
"sent",
]
# optional arguments
domain_id = "domain-id"
group_by = "days"
mailer.get_activity_by_date(date_from, date_to, events, domain_id, group_by)
from mailersend import analytics
from dotenv import load_dotenv
load_dotenv()
mailer = analytics.NewAnalytics(os.getenv('MAILERSEND_API_KEY'))
date_from = 1623073576
date_to = 1623074976
# optional arguments
domain_id = "domain-id"
mailer.get_opens_by_country(date_from, date_to, domain_id)
from mailersend import analytics
from dotenv import load_dotenv
load_dotenv()
mailer = analytics.NewAnalytics(os.getenv('MAILERSEND_API_KEY'))
date_from = 1623073576
date_to = 1623074976
# optional arguments
domain_id = "domain-id"
mailer.get_opens_by_user_agent(date_from, date_to, domain_id)
from mailersend import analytics
from dotenv import load_dotenv
load_dotenv()
mailer = analytics.NewAnalytics(os.getenv('MAILERSEND_API_KEY'))
date_from = 1623073576
date_to = 1623074976
# optional arguments
domain_id = "domain-id"
mailer.get_opens_by_reading_environment(date_from, date_to, domain_id)
from mailersend import inbound_routing
from dotenv import load_dotenv
load_dotenv()
mailer = inbound_routing.NewInbound(os.getenv('MAILERSEND_API_KEY'))
print(mailer.get_inbound_routes())
from mailersend import inbound_routing
from dotenv import load_dotenv
load_dotenv()
mailer = inbound_routing.NewInbound(os.getenv('MAILERSEND_API_KEY'))
print(mailer.get_inbound_by_id("inbound-id"))
from mailersend import inbound_routing
from dotenv import load_dotenv
load_dotenv()
mailer = inbound_routing.NewInbound(os.getenv('MAILERSEND_API_KEY'))
options = {}
_catch_filter = {
"type": "catch_recipient",
"filters": [
{
"comparer": "equal",
"value": "test"
}
]
}
_match_filter = {
"type": "match_all"
}
_forwards = [
{
"type": "webhook",
"value": "https://www.mailersend.com/hook"
}
]
mailer.set_name("Example route", options)
mailer.set_domain_enabled(True, options)
mailer.set_inbound_domain("test.mailersend.com", options)
mailer.set_catch_filter(_catch_filter, options)
print(mailer.add_inbound_route())
from mailersend import inbound_routing
from dotenv import load_dotenv
load_dotenv()
route_id = "inbound-route-id"
mailer = inbound_routing.NewInbound(os.getenv('MAILERSEND_API_KEY'))
options = {}
_catch_filter = {
"type": "catch_recipient",
"filters": [
{
"comparer": "equal",
"value": "test"
}
]
}
_match_filter = {
"type": "match_all"
}
_forwards = [
{
"type": "webhook",
"value": "https://www.mailersend.com/hook"
}
]
mailer.set_name("Example route", options)
mailer.set_domain_enabled(True, options)
mailer.set_inbound_domain("test.mailersend.com", options)
mailer.set_catch_filter(_catch_filter, options)
print(mailer.update_inbound_route(route_id))
from mailersend import inbound_routing
from dotenv import load_dotenv
load_dotenv()
route_id = "inbound-route-id"
mailer = inbound_routing.NewInbound(os.getenv('MAILERSEND_API_KEY'))
print(mailer.delete_inbound_route(route_id))
from mailersend import domains
from dotenv import load_dotenv
load_dotenv()
mailer = domains.NewDomain(os.getenv('MAILERSEND_API_KEY'))
mailer.get_domains()
from mailersend import domains
from dotenv import load_dotenv
load_dotenv()
mailer = domains.NewDomain(os.getenv('MAILERSEND_API_KEY'))
mailer.get_domain_by_id("domain-id")
from mailersend import domains
from mailersend import utils
from dotenv import load_dotenv
load_dotenv()
mailer = domains.NewDomain(os.getenv('MAILERSEND_API_KEY'))
helper = utils.NewHelper(os.getenv('MAILERSEND_API_KEY'))
mailer.get_domain_by_id(helper.get_id_by_name("domains","domain-name"))
You can find a full list of settings here.
from mailersend import domains
from dotenv import load_dotenv
load_dotenv()
mailer = domains.NewDomain(os.getenv('MAILERSEND_API_KEY'))
domain_data = {
"name": "mydomain.com",
"return_path_subdomain": "rpsubdomain",
"custom_tracking_subdomain": "ctsubdomain",
"inbound_routing_subdomain": "irsubdomain"
}
mailer.add_domain("name", domain_data)
from mailersend import domains
from dotenv import load_dotenv
load_dotenv()
mailer = domains.NewDomain(os.getenv('MAILERSEND_API_KEY'))
mailer.delete_domain("domain-id")
from mailersend import domains
from dotenv import load_dotenv
load_dotenv()
mailer = domains.NewDomain(os.getenv('MAILERSEND_API_KEY'))
mailer.get_recipients_for_domain("domain-id")
You can find a full list of settings here.
from mailersend import domains
from dotenv import load_dotenv
load_dotenv()
mailer = domains.NewDomain(os.getenv('MAILERSEND_API_KEY'))
domain_data = {
"send_paused": True,
"track_clicks": True,
"track_opens": True,
"track_unsubscribe": True,
"track_unsubscribe_html": "<p>Click to <a href='{$unsubscribe}'>unsubscribe</a></p>",
"track_unsubscribe_plain": "Click to unsubscribe: {$unsubscribe}",
"track_content": True,
"custom_tracking_enabled": True,
"custom_tracking_subdomain": "email",
"precedence_bulk": False
}
mailer.update_domain_setting("domain-id", domain_data)
from mailersend import domains
from dotenv import load_dotenv
load_dotenv()
mailer = domains.NewDomain(os.getenv('MAILERSEND_API_KEY'))
mailer.get_dns_records("domain-id")
from mailersend import domains
from dotenv import load_dotenv
load_dotenv()
mailer = domains.NewDomain(os.getenv('MAILERSEND_API_KEY'))
mailer.verify_domain("domain-id")
from mailersend import messages
from dotenv import load_dotenv
load_dotenv()
mailer = messages.NewMessage(os.getenv('MAILERSEND_API_KEY'))
mailer.get_messages()
from mailersend import messages
from dotenv import load_dotenv
load_dotenv()
mailer = messages.NewMessage(os.getenv('MAILERSEND_API_KEY'))
mailer.get_message_by_id("message-id")
from mailersend import scheduled_messages
from dotenv import load_dotenv
load_dotenv()
mailer = scheduled_messages.NewMessageSchedule(os.getenv('MAILERSEND_API_KEY'))
print(mailer.get_scheduled_messages())
from mailersend import scheduled_messages
from dotenv import load_dotenv
load_dotenv()
mailer = scheduled_messages.NewMessageSchedule(os.getenv('MAILERSEND_API_KEY'))
print(mailer.get_scheduled_message_by_id("scheduled-message-id"))
from mailersend import scheduled_messages
from dotenv import load_dotenv
load_dotenv()
mailer = scheduled_messages.NewMessageSchedule(os.getenv('MAILERSEND_API_KEY'))
print(mailer.delete_scheduled_message("scheduled-message-id"))
from mailersend import recipients
from dotenv import load_dotenv
load_dotenv()
mailer = recipients.NewRecipient(os.getenv('MAILERSEND_API_KEY'))
mailer.get_recipients()
from mailersend import recipients
from dotenv import load_dotenv
load_dotenv()
mailer = recipients.NewRecipient(os.getenv('MAILERSEND_API_KEY'))
mailer.get_recipient_by_id("recipient-id")
from mailersend import recipients
from dotenv import load_dotenv
load_dotenv()
mailer = recipients.NewRecipient(os.getenv('MAILERSEND_API_KEY'))
mailer.delete_recipient("recipient-id")
from mailersend import recipients
from dotenv import load_dotenv
load_dotenv()
mailer = recipients.NewRecipient(os.getenv('MAILERSEND_API_KEY'))
mailer.get_recipients_from_blocklist("domain-id")
from mailersend import recipients
from dotenv import load_dotenv
load_dotenv()
mailer = recipients.NewRecipient(os.getenv('MAILERSEND_API_KEY'))
mailer.get_hard_bounces("domain-id")
from mailersend import recipients
from dotenv import load_dotenv
load_dotenv()
mailer = recipients.NewRecipient(os.getenv('MAILERSEND_API_KEY'))
mailer.get_spam_complaints("domain-id")
from mailersend import recipients
from dotenv import load_dotenv
load_dotenv()
mailer = recipients.NewRecipient(os.getenv('MAILERSEND_API_KEY'))
mailer.get_unsubscribes("domain-id")
Using recipients:
from mailersend import recipients
from dotenv import load_dotenv
load_dotenv()
mailer = recipients.NewRecipient(os.getenv('MAILERSEND_API_KEY'))
recipient_list = [
'blocked@client.com'
]
mailer.add_to_blocklist("domain-id", recipients=recipient_list)
Using patterns:
from mailersend import recipients
from dotenv import load_dotenv
load_dotenv()
mailer = recipients.NewRecipient(os.getenv('MAILERSEND_API_KEY'))
recipient_patterns = [
'*@client.com'
]
mailer.add_to_blocklist("domain-id", patterns=recipient_patterns)
from mailersend import recipients
from dotenv import load_dotenv
load_dotenv()
mailer = recipients.NewRecipient(os.getenv('MAILERSEND_API_KEY'))
recipient_list = [
"your@client.com"
]
mailer.add_hard_bounces("domain-id", recipient_list)
from mailersend import recipients
from dotenv import load_dotenv
load_dotenv()
mailer = recipients.NewRecipient(os.getenv('MAILERSEND_API_KEY'))
recipient_list = [
"your@client.com"
]
mailer.add_spam_complaints("domain-id", recipient_list)
from mailersend import recipients
from dotenv import load_dotenv
load_dotenv()
mailer = recipients.NewRecipient(os.getenv('MAILERSEND_API_KEY'))
recipient_list = [
"your@client.com"
]
mailer.add_unsubscribes("domain-id", recipient_list)
from mailersend import recipients
from dotenv import load_dotenv
load_dotenv()
mailer = recipients.NewRecipient(os.getenv('MAILERSEND_API_KEY'))
recipient_list = [
"your@client.com"
]
mailer.delete_from_blocklist("domain-id", recipient_list)
from mailersend import recipients
from dotenv import load_dotenv
load_dotenv()
mailer = recipients.NewRecipient(os.getenv('MAILERSEND_API_KEY'))
recipient_list = [
"your@client.com"
]
mailer.delete_hard_bounces("domain-id", recipient_list)
from mailersend import recipients
from dotenv import load_dotenv
load_dotenv()
mailer = recipients.NewRecipient(os.getenv('MAILERSEND_API_KEY'))
recipient_list = [
"your@client.com"
]
mailer.delete_spam_complaints("domain-id", recipient_list)
from mailersend import recipients
from dotenv import load_dotenv
load_dotenv()
mailer = recipients.NewRecipient(os.getenv('MAILERSEND_API_KEY'))
recipient_list = [
"your@client.com"
]
mailer.delete_unsubscribes("domain-id", recipient_list)
from mailersend import tokens
from dotenv import load_dotenv
load_dotenv()
mailer = tokens.NewToken(os.getenv('MAILERSEND_API_KEY'))
scopes = ["email_full", "analytics_read"]
mailer.create_token("my-token", scopes)
Because of security reasons, we only allow access token appearance once during creation. In order to see the access token created you can do:
from mailersend import tokens
from dotenv import load_dotenv
load_dotenv()
mailer = tokens.NewToken(os.getenv('MAILERSEND_API_KEY'))
scopes = ["email_full", "analytics_read"]
print(mailer.create_token("my-token", scopes))
from mailersend import tokens
from dotenv import load_dotenv
load_dotenv()
mailer = tokens.NewToken(os.getenv('MAILERSEND_API_KEY'))
# pause
mailer.update_token("my-token")
# unpause
mailer.update_token("my-token", pause=False)
from mailersend import tokens
from dotenv import load_dotenv
load_dotenv()
mailer = tokens.NewToken(os.getenv('MAILERSEND_API_KEY'))
mailer.delete_token("token-id")
from mailersend import templates
from dotenv import load_dotenv
load_dotenv()
mailer = templates.NewTemplate(os.getenv('MAILERSEND_API_KEY'))
mailer.get_templates()
from mailersend import templates
from dotenv import load_dotenv
load_dotenv()
mailer = templates.NewTemplate(os.getenv('MAILERSEND_API_KEY'))
template_id = 1234
mailer.get_template_by_id()
from mailersend import templates
from dotenv import load_dotenv
load_dotenv()
mailer = templates.NewTemplate(os.getenv('MAILERSEND_API_KEY'))
template_id = 1234
mailer.delete_template()
from mailersend import webhooks
from dotenv import load_dotenv
load_dotenv()
mailer = webhooks.NewWebhook(os.getenv('MAILERSEND_API_KEY'))
mailer.get_webhooks("domain-id")
from mailersend import webhooks
from dotenv import load_dotenv
load_dotenv()
mailer = webhooks.NewWebhook(os.getenv('MAILERSEND_API_KEY'))
mailer.get_webhook_by_id("webhook-id")
from mailersend import webhooks
from dotenv import load_dotenv
load_dotenv()
webhookEvents = ['activity.sent', 'activity.delivered']
webhook = webhooks.NewWebhook(os.getenv('MAILERSEND_API_KEY'))
webhook.set_webhook_url("https://webhooks.mysite.com")
webhook.set_webhook_name("my first webhook")
webhook.set_webhook_events(webhookEvents)
webhook.set_webhook_domain("domain-id")
webhook.create_webhook()
from mailersend import webhooks
from dotenv import load_dotenv
load_dotenv()
webhookEvents = ['activity.sent', 'activity.delivered']
webhook = webhooks.NewWebhook(os.getenv('MAILERSEND_API_KEY'))
webhook.set_webhook_url("https://webhooks.mysite.com")
webhook.set_webhook_name("my first webhook")
webhook.set_webhook_events(webhookEvents)
webhook.set_webhook_domain("domain-id")
webhook.set_webhook_enabled(False)
webhook.create_webhook()
from mailersend import webhooks
from dotenv import load_dotenv
load_dotenv()
webhook = webhooks.NewWebhook(os.getenv('MAILERSEND_API_KEY'))
webhook.update_webhook("webhook-id", "name", "a new webhook name")
from mailersend import webhooks
from dotenv import load_dotenv
load_dotenv()
webhook = webhooks.NewWebhook(os.getenv('MAILERSEND_API_KEY'))
webhook.update_webhook("webhook-id", "enabled", False)
from mailersend import webhooks
from dotenv import load_dotenv
load_dotenv()
webhook = webhooks.NewWebhook(os.getenv('MAILERSEND_API_KEY'))
webhook.delete_webhook("webhook-id")
Without personalization:
from mailersend import sms_sending
from dotenv import load_dotenv
load_dotenv()
mailer = sms_sending.NewSmsSending(os.getenv('MAILERSEND_API_KEY'))
# Number belonging to your account in E164 format
number_from = "+11234567890"
# You can add up to 50 recipient numbers
numbers_to = [
"+11234567891",
"+11234567892"
]
text = "This is the text content"
print(mailer.send_sms(number_from, numbers_to, text))
With personalization:
from mailersend import sms_sending
from dotenv import load_dotenv
load_dotenv()
mailer = sms_sending.NewSmsSending(os.getenv('MAILERSEND_API_KEY'))
# Number belonging to your account in E164 format
number_from = "+11234567890"
# You can add up to 50 recipient numbers
numbers_to = [
"+11234567891",
"+11234567892"
]
text = "Hi {{name}} how are you?"
personalization = [
{
"phone_number": "+11234567891",
"data": {
"name": "Mike"
}
},
{
"phone_number": "+11234567892",
"data": {
"name": "John"
}
}
]
print(mailer.send_sms(number_from, numbers_to, text, personalization))
from mailersend import sms_activity
from dotenv import load_dotenv
load_dotenv()
mailer = sms_activity.NewSmsActivity(os.getenv('MAILERSEND_API_KEY'))
#Request parameters
sms_number_id = 1365743
date_from = 1655157601
date_to = 1655158601
status = ["queued", "failed"]
page = 1
limit = 200
print(mailer.get_activities(sms_number_id=sms_number_id, date_from=date_from, date_to=date_to, status=status, page=page, limit=limit))
from mailersend import sms_activity
from dotenv import load_dotenv
load_dotenv()
mailer = sms_activity.NewSmsActivity(os.getenv('MAILERSEND_API_KEY'))
#Request parameters
sms_message_id = "62a9d12b07852eaf2207b417"
print(mailer.get_activity(sms_message_id))
from mailersend import sms_phone_numbers
from dotenv import load_dotenv
load_dotenv()
mailer = sms_phone_numbers.NewSmsNumbers(os.getenv('MAILERSEND_API_KEY'))
#Request parameters
paused = False
print(mailer.get_phone_numbers(paused))
from mailersend import sms_phone_numbers
from dotenv import load_dotenv
load_dotenv()
mailer = sms_phone_numbers.NewSmsNumbers(os.getenv('MAILERSEND_API_KEY'))
#Request parameters
sms_number_id = "9pq3enl6842vwrzx"
print(mailer.get_phone_number(sms_number_id))
from mailersend import sms_phone_numbers
from dotenv import load_dotenv
load_dotenv()
mailer = sms_phone_numbers.NewSmsNumbers(os.getenv('MAILERSEND_API_KEY'))
#Request parameters
sms_number_id = "9pq3enl6842vwrzx"
paused = True
print(mailer.update_phone_number(sms_number_id, paused))
from mailersend import sms_phone_numbers
from dotenv import load_dotenv
load_dotenv()
mailer = sms_phone_numbers.NewSmsNumbers(os.getenv('MAILERSEND_API_KEY'))
#Request parameters
sms_number_id = "9pq3enl6842vwrzx"
print(mailer.delete_phone_number(sms_number_id))
from mailersend import sms_recipients
from dotenv import load_dotenv
load_dotenv()
mailer = sms_recipients.NewSmsRecipients(os.getenv('MAILERSEND_API_KEY'))
#Request parameters
sms_number_id = "9pq3enl6842vwrzx"
status = "active"
print(mailer.get_recipients(status=status, sms_number_id=sms_number_id))
from mailersend import sms_recipients
from dotenv import load_dotenv
load_dotenv()
mailer = sms_recipients.NewSmsRecipients(os.getenv('MAILERSEND_API_KEY'))
#Request parameters
sms_recipient_id = "627e756fd30078fb2208cc87"
print(mailer.get_recipient(sms_recipient_id))
from mailersend import sms_recipients
from dotenv import load_dotenv
load_dotenv()
mailer = sms_recipients.NewSmsRecipients(os.getenv('MAILERSEND_API_KEY'))
#Request parameters
sms_recipient_id = "627e756fd30078fb2208cc87"
status = "opt_out"
print(mailer.update_recipient(sms_recipient_id, status))
from mailersend import sms_messages
from dotenv import load_dotenv
load_dotenv()
mailer = sms_messages.NewSmsMessages(os.getenv('MAILERSEND_API_KEY'))
print(mailer.get_messages())
from mailersend import sms_messages
from dotenv import load_dotenv
load_dotenv()
#Request parameters
sms_message_id = "627e756fd30078fb2208cc87"
mailer = sms_messages.NewSmsMessages(os.getenv('MAILERSEND_API_KEY'))
print(mailer.get_message(sms_message_id))
from mailersend import sms_webhooks
from dotenv import load_dotenv
load_dotenv()
mailer = sms_webhooks.NewSmsWebhooks(os.getenv('MAILERSEND_API_KEY'))
#Request parameters
sms_number_id = "9pq3enl6842vwrzx"
print(mailer.get_webhooks(sms_number_id))
from mailersend import sms_webhooks
from dotenv import load_dotenv
load_dotenv()
mailer = sms_webhooks.NewSmsWebhooks(os.getenv('MAILERSEND_API_KEY'))
#Request parameters
sms_webhook_id = "aaui13enl12f2vzx"
print(mailer.get_webhook(sms_webhook_id))
from mailersend import sms_webhooks
from dotenv import load_dotenv
load_dotenv()
mailer = sms_webhooks.NewSmsWebhooks(os.getenv('MAILERSEND_API_KEY'))
#Request parameters
url = "https://webhook-url.com"
name = "My Webhook Name"
events = ["sms.sent"]
sms_number_id = "9pq3enl6842vwrzx"
enabled = True
print(mailer.create_webhook(url, name, events, sms_number_id, enabled))
from mailersend import sms_webhooks
from dotenv import load_dotenv
load_dotenv()
mailer = sms_webhooks.NewSmsWebhooks(os.getenv('MAILERSEND_API_KEY'))
#Request parameters
url = "https://different-url.com"
name = "New Webhook Name"
events = ["sms.sent", "sms.failed"],
sms_webhook_id = "aaui13enl12f2vzx"
enabled = False
print(mailer.update_webhook(sms_webhook_id, url, name, events, enabled))
from mailersend import sms_webhooks
from dotenv import load_dotenv
load_dotenv()
mailer = sms_webhooks.NewSmsWebhooks(os.getenv('MAILERSEND_API_KEY'))
#Request parameters
sms_webhook_id = "aaui13enl12f2vzx"
print(mailer.delete_webhook(sms_webhook_id))
from mailersend import sms_webhooks
from dotenv import load_dotenv
load_dotenv()
mailer = sms_webhooks.NewSmsWebhooks(os.getenv('MAILERSEND_API_KEY'))
#Request parameters
sms_number_id = "9pq3enl6842vwrzx"
print(mailer.get_webhooks(sms_number_id))
from mailersend import sms_inbounds
from dotenv import load_dotenv
load_dotenv()
mailer = sms_inbounds.NewSmsInbounds(os.getenv('MAILERSEND_API_KEY'))
#Request parameters
sms_number_id = "123456789"
enabled = True
page = 1
limit = 25
print(mailer.get_inbound_routes(sms_number_id, enabled, page, limit))
from mailersend import sms_inbounds
from dotenv import load_dotenv
load_dotenv()
mailer = sms_inbounds.NewSmsInbounds(os.getenv('MAILERSEND_API_KEY'))
#Request parameters
sms_inbound_id = "123456789"
print(mailer.get_inbound_route(sms_inbound_id))
from mailersend import sms_inbounds
from dotenv import load_dotenv
load_dotenv()
mailer = sms_inbounds.NewSmsInbounds(os.getenv('MAILERSEND_API_KEY'))
#Request parameters
sms_number_id = "123456789"
name = "My route"
forward_url = "https://some.url"
filter = {
"comparer": "equal",
"value": "START"
}
enabled = True
print(mailer.create_inbound_route(sms_number_id, name, forward_url, filter, enabled))
from mailersend import sms_inbounds
from dotenv import load_dotenv
load_dotenv()
mailer = sms_inbounds.NewSmsInbounds(os.getenv('MAILERSEND_API_KEY'))
#Request parameters
sms_number_id = "123456789"
name = "New name"
forward_url = "https://news.url"
filter = {
"comparer": "contains",
"value": "some-value"
}
enabled = True
print(mailer.update_inbound_route(sms_number_id, name, forward_url, filter, enabled))
from mailersend import sms_inbounds
from dotenv import load_dotenv
load_dotenv()
mailer = sms_inbounds.NewSmsInbounds(os.getenv('MAILERSEND_API_KEY'))
#Request parameters
sms_inbound_id = "123456789"
print(mailer.delete_inbound_route()(sms_inbound_id))
from mailersend import sender_identities
from dotenv import load_dotenv
load_dotenv()
mailer = sender_identities.NewSenderIdentity(os.getenv('MAILERSEND_API_KEY'))
print(mailer.get_identities())
from mailersend import sender_identities
from dotenv import load_dotenv
load_dotenv()
mailer = sender_identities.NewSenderIdentity(os.getenv('MAILERSEND_API_KEY'))
print(mailer.get_identity(identity_id="12345"))
from mailersend import sender_identities
from dotenv import load_dotenv
load_dotenv()
mailer = sender_identities.NewSenderIdentity(os.getenv('MAILERSEND_API_KEY'))
print(mailer.create_identity(
domain_id="123456",
name="John Doe",
email="email@domain.com",
reply_to_email="reply@domain.com",
reply_to_name="Doe John",
add_note=True,
personal_note="My awesome note",
))
from mailersend import sender_identities
from dotenv import load_dotenv
load_dotenv()
mailer = sender_identities.NewSenderIdentity(os.getenv('MAILERSEND_API_KEY'))
print(mailer.update_identity(
identity_id="123456",
domain_id="123456",
name="Abe Doe",
email="email@mydomain.com",
reply_to_email="reply@mydomain.com",
reply_to_name="Doe Abe",
add_note=False
))
from mailersend import sender_identities
from dotenv import load_dotenv
load_dotenv()
mailer = sender_identities.NewSenderIdentity(os.getenv('MAILERSEND_API_KEY'))
print(mailer.delete_identity(identity_id="123456"))
from mailersend import api_quota
from dotenv import load_dotenv
load_dotenv()
mailer = api_quota.NewApiQuota(os.getenv('MAILERSEND_API_KEY'))
print(mailer.get_quota())
Print the output of mailer.send()
to view status code and errors.
from mailersend import emails
mailer = emails.NewEmail()
mail_body = {}
print(mailer.send(mail_body))
TBD
Feature group | Endpoint | Available |
---|---|---|
Activity | GET activity | ✅ |
Analytics | GET analytics | ✅ |
Domains | {GET, PUT, DELETE} domains | ✅ |
Emails | POST send | ✅ |
Messages | GET messages | ✅ |
Recipients | {GET, DELETE} recipients | ✅ |
Templates | {GET, DELETE} templates | ✅ |
Tokens | {POST, PUT, DELETE} tokens | ✅ |
Webhooks | {GET, POST, PUT, DELETE} webhooks | ✅ |
SMS Sending | {POST} sms | ✅ |
SMS Activity | {GET} sms-activity | ✅ |
SMS Phone numbers | {GET, PUT, DELETE} sms-numbers | ✅ |
SMS Recipients | {GET, PUT} sms-recipients | ✅ |
SMS Messages | {GET} sms-messages | ✅ |
SMS Webhooks | {GET, POST, PUT, DELETE} sms-webhooks | ✅ |
SMS Inbounds | {GET, POST, PUT, DELETE} sms-inbounds | ✅ |
Sender Identities | {GET, POST, PUT, DELETE} identities | ✅ |
API Quota | {GET} api-quota | ✅ |
If, at the moment, some endpoint is not available, please use other available tools to access it. Refer to official API docs for more info.
In case you find any bugs, submit an issue directly here in GitHub.
You are welcome to create SDK for any other programming language.
If you have any troubles using our API or SDK free to contact our support by email info@mailersend.com
The official documentation is at https://developers.mailersend.com
FAQs
The official MailerSend Python SDK
We found that mailersend demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.