Flask-Mailing v3.0.0 represents the pinnacle of modern Python email handling. Built for 2026 and beyond, it combines cutting-edge Python 3.10+ features, Flask 3.1+ compatibility, and enterprise-grade security into one powerful package.
- β
Python 3.10+ Required - Modern union syntax (
str | None) and built-in generics - β Python 3.14 Ready - Future-proof architecture
- β Type Safety First - Full type hints with mypy validation
- β Performance Optimized - Built for modern Python performance gains
- π Rate Limiting - Prevent abuse with built-in rate limiting
- π‘οΈ Email Security Validation - Detect and block disposable/malicious emails
- π Path Traversal Protection - Enhanced file attachment security
- π¨ Content Sanitization - Prevent injection attacks
- π Security Scanning - Automated vulnerability detection
- π Modern Async Patterns - Proper context managers and error handling
- π¦ Pydantic v2.11+ - Latest validation with enhanced performance
- ποΈ Modern Build System - Ruff, Black, isort, mypy integration
- π³ Container Ready - Docker support with security best practices
- Python 3.10+ (3.14 compatible!)
- Flask 3.1+ with async support
- Modern development environment
# 2026-Ready Installation (Python 3.10+ required)
pip install flask-mailing>=3.0.0
# With enhanced security features
pip install flask-mailing[email-checking]
# Full development setup
pip install flask-mailing[dev,email-checking]git clone https://github.com/marktennyson/flask-mailing.git
cd flask-mailing
pip install -e ".[dev,email-checking]"from flask import Flask, jsonify
from flask_mailing import Mail, Message
app = Flask(__name__)
# Configuration for Flask 3.x
app.config.update(
MAIL_USERNAME="your.email@gmail.com",
MAIL_PASSWORD="your_app_password",
MAIL_PORT=587,
MAIL_SERVER="smtp.gmail.com",
MAIL_USE_TLS=True,
MAIL_USE_SSL=False,
USE_CREDENTIALS=True,
VALIDATE_CERTS=True,
MAIL_DEFAULT_SENDER="your.email@gmail.com",
MAIL_FROM_NAME="Your App Name"
)
mail = Mail(app)
@app.post("/send-email")
async def send_email():
message = Message(
subject="Flask-Mailing v3.0.0 Test",
recipients=["recipient@example.com"],
body="Hello from Flask-Mailing v3.0.0! π\n\nNow with Python 3.10-3.14 and Flask 3.x support!",
subtype="plain"
)
await mail.send_message(message)
return jsonify({"status": "Email sent successfully!"})
if __name__ == "__main__":
app.run(debug=True)@app.post("/send-html")
async def send_html():
html_content = """
<html>
<body style="font-family: Arial, sans-serif;">
<h1 style="color: #2c3e50;">Welcome to Flask-Mailing v3.0.0!</h1>
<p>This email was sent using the modernized Flask-Mailing library.</p>
<ul>
<li>β
Python 3.10-3.14 compatible</li>
<li>β
Flask 3.1+ ready</li>
<li>β
Enhanced performance</li>
</ul>
</body>
</html>
"""
message = Message(
subject="π Flask-Mailing v3.0.0 - HTML Email",
recipients=["recipient@example.com"],
html=html_content,
subtype="html"
)
await mail.send_message(message)
return jsonify({"status": "HTML email sent!"})@app.post("/send-bulk")
async def send_bulk():
email_data = (
("Subject 1", "Message 1", ["user1@example.com"]),
("Subject 2", "Message 2", ["user2@example.com"]),
("Subject 3", "Message 3", ["user3@example.com"]),
)
await mail.send_mass_mail(email_data)
return jsonify({"status": "Bulk emails sent successfully!"})For detailed documentation, examples, and API reference:
- π Documentation
- π§ Configuration Guide
- π Examples
- Minimum Python version: 3.10+ (was 3.6+)
- Minimum Flask version: 3.1+ (was 2.0+)
- Pydantic v2: Updated from v1.x to v2.11+
- Email checking utilities: Now optional dependencies
- Upgrade Python to 3.10+ (recommended: 3.12+)
- Upgrade Flask to 3.1+
- Update requirements.txt:
# Old flask-mailing>=0.2.3 # New flask-mailing>=3.0.0
- Test your application - most APIs remain the same
| Flask-Mailing | Python | Flask | Pydantic | Status |
|---|---|---|---|---|
| 3.0.0+ | 3.10-3.14 | 3.1+ | 2.11+ | β Active |
| 0.2.x | 3.6+ | 2.0+ | 1.8+ | π Legacy |
# Run tests with Python 3.13
python -m pytest tests/ -v
# Run with multiple Python versions using tox
toxWe welcome contributions! Please see our Contributing Guide for details.
aiosmtplib>=4.0.1- Async SMTP clientflask>=3.1.0- Web frameworkpydantic>=2.11.0- Data validationpydantic-settings>=2.9.0- Settings managementemail-validator>=2.3.0- Email validationjinja2>=3.1.6- Template engine
redis>=5.3.0- For email checking featureshttpx>=0.28.1- For HTTP-based email validationdnspython>=2.8.0- For DNS-based validation
- π Github
- π Documentation
- π PyPI
- π Issues
- π¬ Discussions
Made with β€οΈ for the Python & Flask community
Flask-Mailing v3.0.0 - Ready for the future of Python development!
-
π Supports asynchronous email sending using the built-in
asynciolibrary in Python 3.10+. -
π Easily integrates with Flask applications using the provided
Mailextension. -
βοΈ Offers simple and intuitive configuration options for email providers such as SMTP, Sendgrid, and Mailgun.
-
βοΈ Supports HTML and plain-text message formats, as well as the option to send both formats in a multi-part message.
-
π Provides support for file attachments in emails.
-
π¨ Includes customizable email templates and support for Jinja2 templates.
-
π Offers a simple API for sending email messages, allowing for quick and easy implementation in any Flask project.
-
π§ Supports bulk email sending, allowing for the efficient delivery of messages to large email lists.
-
π Provides options for customizing email headers and message priority levels.
-
π Supports email tracking through message IDs and delivery status notifications.
-
π¬ Includes a comprehensive testing suite for ensuring the correct configuration and behavior of the email sending functionality.
-
π Supports email encryption and authentication using TLS and SSL protocols.
-
β οΈ Offers error handling and logging functionality for tracking and resolving email sending issues. -
π Provides detailed documentation and active community support for resolving any issues or questions related to the package.
More information on Getting-Started
π Package health score by snyk.io
β€οΈ Github
π Documentation
π PYPI
Thanks go to these wonderful people ([π§]):
Aniket Sarkar π¬ π π§ |
Joshua Kinslow |
Alexandre Gramfort |
ahmetkurukose |
Sriram |
CharlesTWood |
This project follows the all-contributors specification. Contributions of any kind are welcome!
Before you start please read CONTRIBUTING
