Skip to content

Send Email API

Send Email via HTTP API

There are two HTTP API endpoints for sending emails:

EndpointAuthenticationUse Case
/api/send_mailAuthorization: Bearer <address_JWT> headerInternal calls, requires cookie / header auth
/external/api/send_mailtoken field in request bodyExternal system integration, no header auth needed

What is "Address JWT"?

The Address JWT is the jwt field returned when creating an email address via /api/new_address or /admin/new_address. You can view it in the "Password" menu in the frontend UI. It is NOT the JWT_SECRET environment variable, nor the admin password.

Method 1: Header Authentication (/api/send_mail)

python
send_body = {
    "from_name": "Sender Name",
    "to_name": "Recipient Name",
    "to_mail": "Recipient Address",
    "subject": "Email Subject",
    "is_html": False,  # Set whether it's HTML based on content
    "content": "<Email content: html or text>",
}

res = requests.post(
    "https://your_worker_domain/api/send_mail",
    json=send_body, headers={
        "Authorization": f"Bearer {address_JWT}",
        # "x-custom-auth": "<your_website_password>", # If private site password is enabled
        "Content-Type": "application/json"
    }
)

Method 2: Body Token Authentication (/external/api/send_mail)

Suitable for external system calls, place the Address JWT in the token field of the request body:

python
send_body = {
    "token": "<address_JWT>",
    "from_name": "Sender Name",
    "to_name": "Recipient Name",
    "to_mail": "Recipient Address",
    "subject": "Email Subject",
    "is_html": False,  # Set whether it's HTML based on content
    "content": "<Email content: html or text>",
}
res = requests.post(
    "https://your_worker_domain/external/api/send_mail",
    json=send_body, headers={
        # "x-custom-auth": "<your_website_password>", # If private site password is enabled
        "Content-Type": "application/json"
    }
)

Send Email via SMTP

Please first refer to Configure SMTP Proxy.

This is a python example using the smtplib library to send emails.

JWT Token Password: This is the email login password, which can be viewed in the password menu in the UI interface.

python
import smtplib

from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart


with smtplib.SMTP('localhost', 8025) as smtp:
    smtp.login("jwt", "Enter your JWT token password here")
    message = MIMEMultipart()
    message['From'] = "Me <[email protected]>"
    message['To'] = "Admin <[email protected]>"
    message['Subject'] = "Test Subject"
    message.attach(MIMEText("Test Content", 'html'))
    smtp.sendmail("[email protected]", "[email protected]", message.as_string())

Based on MIT license