# 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 1. **No ripmime dependency**: Uses the enmime Go library for MIME parsing instead of external ripmime binary 2. **Better error handling**: Proper error handling and database transactions 3. **Type safety**: Strongly typed Go structures 4. **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 ```bash 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 ```bash 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