v9.0
Notifuse/notifusev9.0Oct 6, 2025by pierre-b
AI Summary
Notifuse v9.0 introduces comprehensive email attachments support for transactional emails, allowing users to send up to 20 files per email (3MB per file, 10MB total) across all ESP providers. The release includes smart SHA256-based deduplication, automatic content-type detection, and requires a database migration with a new `message_attachments` table and `attachments` JSONB column.
Key Highlights
- Email attachments support for transactional emails across all ESP providers (SMTP, Amazon SES, SparkPost, Postmark, Mailgun, Mailjet)
- Smart deduplication using SHA256 to optimize storage by reusing identical files
- New database schema with `message_attachments` table and `attachments` JSONB column in `message_history`
- Flexible limits: 20 files per email, 3MB per file, 10MB total, with automatic content-type detection
- Fully backward compatible - no breaking changes for existing API calls
New Features
- Email attachments for transactional emails with universal ESP provider support
- Smart deduplication using SHA256 hash-based file matching
- Inline and attachment disposition support
- Automatic content-type detection when not specified
- Base64 encoding support for file content
- New `message_attachments` table for efficient file storage
- New `attachments` JSONB column in `message_history` table
- Automatic database migration on startup
Full Release Notes
# Release v9.0 - Email Attachments Support
**Release Date:** October 6, 2025
## 🎉 What's New
### Email Attachments for Transactional Emails
Send files with your transactional emails! Version 9.0 introduces comprehensive email attachment support across all ESP integrations.
#### ✨ Key Features
- **Universal Support**: Works with all ESP providers (SMTP, Amazon SES, SparkPost, Postmark, Mailgun, Mailjet)
- **Smart Deduplication**: Automatically detects and reuses identical files to optimize storage
- **Flexible Limits**: Send up to 20 files per email (3MB per file, 10MB total)
- **Auto Content-Type Detection**: Automatically identifies file types if not specified
- **Inline & Attachment**: Support for both attachment and inline dispositions
#### 📦 Common Use Cases
- **Order Confirmations**: Attach invoices and receipts
- **Booking Confirmations**: Attach tickets and itineraries
- **Legal Documents**: Attach contracts and agreements
- **Reports**: Attach analytics reports and summaries
- **Certificates**: Attach completion certificates and badges
## 🔧 Technical Changes
### Database Updates
- **New Table**: `message_attachments` for efficient file storage with SHA256-based deduplication
- **Schema Update**: Added `attachments` JSONB column to `message_history` table
- **Automatic Migration**: v9 migration runs automatically on startup
### API Changes
#### New Attachment Object
```json
{
"filename": "invoice.pdf",
"content": "JVBERi0xLjQKJeLjz9MK...",
"content_type": "application/pdf",
"disposition": "attachment"
}
```
#### Updated Email Options
The `email_options` object now supports an `attachments` array:
```json
{
"workspace_id": "your_workspace",
"notification": {
"id": "order_confirmation",
"contact": {
"email": "customer@example.com"
},
"data": {
"order_id": "ORD-12345"
},
"email_options": {
"attachments": [
{
"filename": "invoice-12345.pdf",
"content": "JVBERi0xLjQKJeLjz9MKMy4uLg==",
"content_type": "application/pdf"
}
]
}
}
}
```
## 📋 Attachment Specifications
| Specification | Limit |
| ------------------------ | -------------- |
| Max files per email | 20 |
| Max size per file | 3MB |
| Max total size per email | 10MB |
| Supported formats | All file types |
| Encoding | Base64 |
## 🚀 Getting Started
### 1. Update to v9.0
```bash
# Pull the latest version
docker pull notifuse/notifuse:v9.0
# Or update your docker-compose.yml
version: '3.8'
services:
notifuse:
image: notifuse/notifuse:v9.0
```
### 2. Automatic Migration
The database migration runs automatically on first startup. No manual intervention required.
### 3. Start Sending Attachments
Use the updated API to send emails with attachments:
```bash
curl -X POST https://your-domain.com/api/transactional.send \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"workspace_id": "your_workspace",
"notification": {
"id": "invoice_email",
"contact": {
"email": "customer@example.com"
},
"email_options": {
"attachments": [
{
"filename": "invoice.pdf",
"content": "JVBERi0xLjQK...",
"content_type": "application/pdf"
}
]
}
}
}'
```
## 📚 Documentation
- [Transactional API Documentation](/docs/concepts/transactional-api.mdx)
- [API Reference](/docs/api-reference/endpoint/transactional-send.mdx)
- [Migration Plan](/docs/EMAIL_ATTACHMENTS_MIGRATION.md)
## 🔄 Upgrade Path
### From v8.x to v9.0
1. **Backup your database** (recommended)
2. **Update the Notifuse image** to v9.0
3. **Restart the application** - migration runs automatically
4. **Verify migration** - Check logs for successful migration message
### Rollback Instructions
If you need to rollback:
1. Stop the v9.0 instance
2. Restore your v8.x database backup
3. Start the v8.x instance
## ⚠️ Breaking Changes
**None.** This release is fully backward compatible. Existing API calls without attachments will continue to work exactly as before.
## 🐛 Known Issues
None at this time.
## 🙏 Feedback
We'd love to hear your feedback! If you encounter any issues or have suggestions:
- [Open an issue on GitHub](https://github.com/Notifuse/notifuse/issues)
- [Join our community](https://www.notifuse.com/community)
- Email us at hello@notifuse.com
## 📝 Full Changelog
See [CHANGELOG.md](../../CHANGELOG.md) for complete version history.
---
**Notifuse v9.0** - Making transactional emails more powerful, one attachment at a time! 🚀