Skip to content

Send email messages with Python

This page explains how to send email messages with the Nylas Python SDK and Email API.

Before you begin

Before you start, you must have done the following tasks:

Create and send a draft

To create a draft and send it as an email message, first create a Draft object and assign it attributes.

draft = nylas.drafts.create(
grant_id,
request_body={
"to": [{ "name": "Name", "email": email }],
"reply_to": [{ "name": "Name", "email": email }],
"subject": "Your Subject Here",
"body": "Your email body here.",
}
)

The to parameter is an array of email objects that contains names and email addresses. You can use to for cc and bcc.

Next, use drafts.send() to send the draft as an email message.

draft = nylas.drafts.send(
'<NYLAS_GRANT_ID>',
'<DRAFT_ID>',
)

Reply to an email message

The first step to reply to an email message is to find the thread you want to reply to. Then, create a draft that has the same thread_id and subject, as in the following example.

from dotenv import load_dotenv
load_dotenv()
import os
import sys
from nylas import Client
draft = nylas.drafts.create(
'<NYLAS_GRANT_ID>',
request_body={
"to": [{ "name": "Name", "email": email }],
"reply_to": [{ "name": "Name", "email": email }],
"subject": "Your Subject Here",
"body": "Your email body here.",
"thread_id": '<THREAD_ID>'
}
)
draftSent = nylas.drafts.send(
'<NYLAS_GRANT_ID>',
draft[0].id,
)

Attach a file to an email message

The Attachments endpoint allows you to create and modify files that you can attach to email messages. The following example shows how to take a file that’s saved locally and upload it to Nylas for use with the Email API.

from nylas.utils.file_utils import attach_file_request_builder
# Attachment to add to draft
attachment = attach_file_request_builder('attachment.pdf')

Next, create a draft to attach the file to.

draft = nylas.drafts.create(
'<NYLAS_GRANT_ID>',
request_body={
"to": [{ "name": "Name", "email": email }],
"reply_to": [{ "name": "Name", "email": email }],
"subject": "Your Subject Here",
"body": "Your email body here.",
"attachments": [attachment]
}
)
draft = nylas.drafts.send(
'<NYLAS_GRANT_ID>',
draft[0].id,
)

Below is the full example showing how to attach a file to an email message.

from dotenv import load_dotenv
load_dotenv()
import os
import sys
from nylas import Client
from nylas.utils.file_utils import attach_file_request_builder
nylas = Client(
os.environ.get('NYLAS_API_KEY'),
os.environ.get('NYLAS_API_URI')
)
attachment = attach_file_request_builder('attachment.pdf')
draft = nylas.drafts.create(
'<NYLAS_GRANT_ID>',
request_body={
"to": [{ "name": "Name", "email": email }],
"reply_to": [{ "name": "Name", "email": email }],
"subject": "Your Subject Here",
"body": "Your email body here.",
"attachments": [attachment]
}
)
draft = nylas.drafts.send(
'<NYLAS_GRANT_ID>',
draft[0].id,
)