3.8 KiB
Sendria SMTP Integration Guide
Overview
Sendria (formerly MailTrap) is a development SMTP server that catches emails and displays them in a web interface instead of sending them to real recipients. Perfect for development/testing environments.
Installation
Sendria is a standalone SMTP server application, not a Python package. Install it separately:
Using uv pip (recommended for Python environments):
uv pip install sendria
Using Docker (most reliable):
docker pull ghcr.io/mmbesar/sendria-container:latest
docker run -d \
--name sendria \
-p 1025:1025 \
-p 1080:1080 \
ghcr.io/mmbesar/sendria-container:latest
Quick Start
-
Start Sendria server:
sendria --db mails.sqlite -
Access the web interface:
- SMTP server:
smtp://127.0.0.1:1025 - Web interface:
http://127.0.0.1:1080
- SMTP server:
Configuration
Update Environment Variables
Update your .env file to use Sendria:
# Email Configuration for Sendria (development)
EMAIL_SMTP_SERVER=127.0.0.1
EMAIL_SMTP_PORT=1025
EMAIL_USERNAME=
EMAIL_PASSWORD=
RECIPIENT_EMAIL=admin@example.com
Enable Email Sending in Agent
In src/clm_system/agent.py, modify the send_email_report method:
def send_email_report(self, expiring_contracts: list[ContractAlert], conflicts: list[ContractAlert]):
"""Send email report with scan results"""
try:
msg = MIMEMultipart()
msg['From'] = self.sender_email
msg['To'] = self.recipient_email
msg['Subject'] = f"CLM Daily Report - {datetime.now().strftime('%Y-%m-%d')}"
# Create email body
body = self.create_email_body(expiring_contracts, conflicts)
msg.attach(MIMEText(body, 'plain'))
# Send email via Sendria
server = smtplib.SMTP(self.smtp_server, self.smtp_port)
# No TLS or authentication needed for Sendria
server.send_message(msg)
server.quit()
logger.info("Email report sent via Sendria")
except Exception as e:
logger.error(f"Error sending email report: {e}")
Testing
-
Start Sendria:
sendria --db mails.sqlite -
Run your CLM system:
streamlit run app.py -
Trigger a scan or wait for scheduled scan
-
Check captured emails at
http://127.0.0.1:1080
Sendria Features
- Email Catching: Captures all emails sent to SMTP port 1025
- Web Interface: View emails in browser at port 1080
- No Authentication: Simple setup without credentials
- SQLite Storage: Emails persist in
mails.sqlite - WebSocket Support: Real-time email updates
- API Access: RESTful API for programmatic access
API Endpoints
GET /api/messages/- List all emailsGET /api/messages/{id}.json- Email metadataGET /api/messages/{id}.plain- Plain text contentGET /api/messages/{id}.html- HTML contentGET /api/messages/{id}.eml- Download as EML file
Production vs Development
- Development: Use Sendria (catches emails locally)
- Production: Use Gmail SMTP or other real SMTP service
Important: Sendria is only for development/testing. Never use it in production environments.
Docker Alternative (Recommended)
docker pull ghcr.io/mmbesar/sendria-container:latest
docker run -d \
--name sendria \
-p 1025:1025 \
-p 1080:1080 \
ghcr.io/mmbesar/sendria-container:latest
Docker is the recommended approach as it doesn't require system-wide Python package installation.
Common Issues
- Port already in use: Kill existing process on port 1025 or 1080
- Can't see emails: Check firewall settings and ensure ports are open
- Emails not sending: Verify SMTP settings in your
.envfile - Sendria not found: Ensure it's installed with
uv pip install sendria