SMTP email sender integration for
userharbor.
The package provides SMTPEmailSender, an implementation of UserHarbor's
EmailSender protocol. It sends verification, password reset, and account
security notification messages with Python's standard smtplib and renders
HTML email templates with Jinja.
pip install userharbor-smtpfrom userharbor_smtp import SMTPEmailSender
email_sender = SMTPEmailSender(
host="smtp.example.com",
port=587,
username="smtp-user",
password="smtp-password",
from_email="noreply@example.com",
from_name="UserHarbor",
)By default, the sender uses HTML templates bundled with the package:
verification.htmlpassword_reset.htmlemail_verified.htmlpassword_changed.htmlaccount_deleted.html
To use custom templates, pass a directory containing files with the same names:
email_sender = SMTPEmailSender(
host="smtp.example.com",
port=587,
username="smtp-user",
password="smtp-password",
from_email="noreply@example.com",
template_dir="templates/emails",
)Each template receives:
usernameemailtokenfor verification and password reset messages
Example templates/emails/verification.html:
<p>Hello {{ username }},</p>
<p>Use this token to verify {{ email }}:</p>
<p><strong>{{ token }}</strong></p>SMTPEmailSender(
host="smtp.example.com",
from_email="noreply@example.com",
port=587,
username=None,
password=None,
from_name=None,
template_dir=None,
verification_subject="Verify your email",
password_reset_subject="Reset your password",
email_verified_subject="Email verified",
password_changed_subject="Password changed",
account_deleted_subject="Account deleted",
use_starttls=True,
use_ssl=False,
ssl_context=None,
allow_insecure=False,
timeout=10,
)TLS certificate and hostname verification use Python's secure default SSL
context. Pass ssl_context only when the application needs a custom trusted
certificate authority or TLS policy. At least one of use_starttls and
use_ssl must be enabled by default. Set allow_insecure=True only for a
trusted local SMTP relay where plaintext transport is an explicit decision.
UserHarbor SMTP is released under the MIT License.