Skip to content

Django

settings.py
import os
EMAIL_BACKEND = "django.core.mail.backends.smtp.EmailBackend"
EMAIL_HOST = "smtp.spacepost.dev"
EMAIL_PORT = 25976
EMAIL_USE_TLS = True # STARTTLS (required). Do not set EMAIL_USE_SSL.
EMAIL_HOST_USER = "spacepost"
EMAIL_HOST_PASSWORD = os.environ["SPACEPOST_API_KEY"]
DEFAULT_FROM_EMAIL = "Acme <hello@acme.com>"
SERVER_EMAIL = "Acme Alerts <alerts@acme.com>" # used for error emails to ADMINS

Use EMAIL_USE_TLS (STARTTLS) and leave EMAIL_USE_SSL unset: implicit TLS (port 465) is not offered yet.

from django.core.mail import EmailMultiAlternatives
msg = EmailMultiAlternatives(
subject="Welcome",
body="Welcome to Acme.",
to=["user@example.com"],
headers={"X-SpacePost-Tags": "category=welcome"},
)
msg.attach_alternative("<p>Welcome to <b>Acme</b>.</p>", "text/html")
msg.send()

Password reset and other built-in emails use DEFAULT_FROM_EMAIL, so it must be on a verified domain.

Test from the shell:

Terminal window
python manage.py sendtestemail delivered@test.spacepost.dev