|
|
||
|---|---|---|
| .. | ||
| Dockerfile | ||
| README.md | ||
| app.py | ||
| pyproject.toml | ||
README.md
Email Service
Overview
The Email Service is the first component in a Redis pub/sub processing chain for bank-related email automation. It monitors a specified mailbox for emails with attachments, filters them based on IBAN criteria, and publishes the data to a Redis channel for further processing.
Features
Email Processing
- Connects to a configured mailbox using IMAP
- Implements smart date-based filtering:
- Checks emails from the past 14 days on the first run of each day
- Checks emails from the past 7 days on subsequent runs within the same day
- Extracts attachments from emails
- Filters attachments based on IBAN criteria
- Uses a context manager to ensure emails are properly handled even during errors
Redis Integration
- Publishes messages to a Redis pub/sub channel ("CollectedData")
- Each message contains:
- Unique UUID
- Timestamp
- Initial stage marker ("red")
- Attachment payload and metadata
- Connects to an external Redis server
Error Handling
- Robust error management with context managers
- Automatic marking of emails as unread if processing fails
- Comprehensive logging
Configuration
Environment Variables
EMAIL_HOST=10.10.2.34
EMAIL_USERNAME=isbank@mehmetkaratay.com.tr
EMAIL_PASSWORD=system
EMAIL_SLEEP=60
AUTHORIZE_IBAN=4245-0093333
REDIS_HOST=10.10.2.15
REDIS_PORT=6379
REDIS_PASSWORD=your_strong_password_here
Deployment
Docker
The service is containerized using Docker and can be deployed using the provided Dockerfile and docker-compose configuration.
# Build and start the service
docker compose -f bank-services-docker-compose.yml up -d --build
# View logs
docker compose -f bank-services-docker-compose.yml logs -f email_service
# Stop the service
docker compose -f bank-services-docker-compose.yml down
Service Management
The check_bank_services.sh script provides a simple way to restart the service:
./check_bank_services.sh
Architecture
Redis Pub/Sub Chain
This service is the first in a multi-stage processing chain:
- Email Service (this service): Reads emails, extracts attachments, publishes to Redis with stage="red"
- Processor Service: Subscribes to stage="red" messages, processes data, republishes with stage="processed"
- Writer Service: Subscribes to stage="processed" messages, writes data to final destination, marks as stage="completed"
Development
Dependencies
- Python 3.12
- Redbox (email library)
- Redis
State Management
The service maintains a state file at /tmp/email_service_last_run.json to track when it last ran, enabling the smart date-based filtering feature.