Skip to content

Email

FastEdgy provides a built-in Email service for sending templated emails via SMTP. It handles both HTML and plain text formats with automatic conversion and Jinja2 template rendering.

Key features

  • SMTP support: Send emails via any SMTP server (Gmail, SendGrid, etc.)
  • Jinja2 templates: Create dynamic email templates with variables
  • Multi-format: Automatic HTML to plain text conversion
  • Async delivery: Non-blocking email sending
  • Template structure: Organized templates with subject, HTML, and text parts
  • Configuration-driven: Environment-based SMTP settings

How it works

The Email service loads templates from your templates/ directory and renders them with provided variables. Each template can have three parts:

  • Subject: {% block subject %}Your subject here{% endblock %}
  • HTML body: {% block body_html %}HTML content{% endblock %}
  • Text body: {% block body_text %}Plain text content{% endblock %}

If you only provide HTML, the text version is automatically generated.

Basic example

from fastedgy.dependencies import Inject
from fastedgy.mail import Mail


async def send_welcome_email(user_email: str, user_name: str, mail: Mail = Inject(Mail)):
    await mail.send_template(template_name="welcome", tpl_vals={"name": user_name}, email_parts={"To": user_email})

Template structure

templates/
└── en/
    └── welcome.html
<!-- templates/en/welcome.html -->
{% block subject %}Welcome, {{ name }}!{% endblock %}

{% block body_html %}
<h1>Welcome {{ name }}!</h1>
<p>Thank you for joining our platform.</p>
{% endblock %}

{% block body_text %}
Welcome {{ name }}!
Thank you for joining our platform.
{% endblock %}

Configuration

Set these environment variables:

  • SMTP_HOST: Your SMTP server (e.g., smtp.gmail.com)
  • SMTP_PORT: SMTP port (default: 587)
  • SMTP_USERNAME: SMTP username
  • SMTP_PASSWORD: SMTP password
  • SMTP_DEFAULT_FROM: Default sender email
  • SMTP_USE_TLS: Enable TLS (default: true)

Use cases

  • User registration: Welcome emails and account confirmations
  • Password reset: Secure password reset links
  • Notifications: Order confirmations, status updates
  • Marketing: Newsletters and promotional emails

Get started

Ready to send your first email? Learn how to set up and use the Email service:

Usage Guide