| .. | ||
| main.go | ||
| README.md | ||
Vault Email Processor
This is a Go rewrite of the PHP vault.php script that processes emails for the CMC Sales system.
Key Changes from PHP Version
- No ripmime dependency: Uses the enmime Go library for MIME parsing instead of external ripmime binary
- Better error handling: Proper error handling and database transactions
- Type safety: Strongly typed Go structures
- Modern email parsing: Uses enmime for robust email parsing
Features
- Processes emails from vault directory
- Parses email headers and extracts recipients
- Identifies and creates users as needed
- Extracts attachments and email body parts
- Matches document identifiers in subjects (enquiries, invoices, POs, jobs)
- Saves emails with all associations to database
- Moves processed emails to processed directory
Usage
go run cmd/vault/main.go \
--emaildir=/var/www/emails \
--vaultdir=/var/www/vaultmsgs/new \
--processeddir=/var/www/vaultmsgs/cur \
--dbhost=127.0.0.1 \
--dbuser=cmc \
--dbpass="xVRQI&cA?7AU=hqJ!%au" \
--dbname=cmc
Build
go build -o vault cmd/vault/main.go
Dependencies
- github.com/jhillyerd/enmime - MIME email parsing
- github.com/google/uuid - UUID generation for unique filenames
- github.com/go-sql-driver/mysql - MySQL driver
Database Tables Used
- emails - Main email records
- email_recipients - To/CC recipients
- email_attachments - File attachments
- emails_enquiries - Email to enquiry associations
- emails_invoices - Email to invoice associations
- emails_purchase_orders - Email to PO associations
- emails_jobs - Email to job associations
- users - System users
- enquiries, invoices, purchase_orders, jobs - For identifier matching