Initial implementation by kimi k2 0905
This commit is contained in:
138
PLANNING/smtp.md
Normal file
138
PLANNING/smtp.md
Normal file
@@ -0,0 +1,138 @@
|
||||
# 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):**
|
||||
```bash
|
||||
uv pip install sendria
|
||||
```
|
||||
|
||||
**Using Docker (most reliable):**
|
||||
```bash
|
||||
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
|
||||
|
||||
1. **Start Sendria server:**
|
||||
```bash
|
||||
sendria --db mails.sqlite
|
||||
```
|
||||
|
||||
2. **Access the web interface:**
|
||||
- SMTP server: `smtp://127.0.0.1:1025`
|
||||
- Web interface: `http://127.0.0.1:1080`
|
||||
|
||||
## Configuration
|
||||
|
||||
### Update Environment Variables
|
||||
|
||||
Update your `.env` file to use Sendria:
|
||||
|
||||
```bash
|
||||
# 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:
|
||||
|
||||
```python
|
||||
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
|
||||
|
||||
1. **Start Sendria:**
|
||||
```bash
|
||||
sendria --db mails.sqlite
|
||||
```
|
||||
|
||||
2. **Run your CLM system:**
|
||||
```bash
|
||||
streamlit run app.py
|
||||
```
|
||||
|
||||
3. **Trigger a scan** or wait for scheduled scan
|
||||
|
||||
4. **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 emails
|
||||
- `GET /api/messages/{id}.json` - Email metadata
|
||||
- `GET /api/messages/{id}.plain` - Plain text content
|
||||
- `GET /api/messages/{id}.html` - HTML content
|
||||
- `GET /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)
|
||||
|
||||
```bash
|
||||
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
|
||||
|
||||
1. **Port already in use**: Kill existing process on port 1025 or 1080
|
||||
2. **Can't see emails**: Check firewall settings and ensure ports are open
|
||||
3. **Emails not sending**: Verify SMTP settings in your `.env` file
|
||||
4. **Sendria not found**: Ensure it's installed with `uv pip install sendria`
|
||||
Reference in New Issue
Block a user