aboutsummaryrefslogtreecommitdiff
path: root/docs/workflows/email.org
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-02-22 23:20:56 -0600
committerCraig Jennings <c@cjennings.net>2026-02-22 23:20:56 -0600
commit5e6877e8f3fb552fce3367ff273167d2cf6af75f (patch)
tree909f98edbbb940aafb95de02457d4d6f7db3cba4 /docs/workflows/email.org
parentb104dde43fcc717681a8733a977eb528c60eb13f (diff)
downloadarchangel-5e6877e8f3fb552fce3367ff273167d2cf6af75f.tar.gz
archangel-5e6877e8f3fb552fce3367ff273167d2cf6af75f.zip
chore: add docs/ to .gitignore and untrack personal files
docs/ contains session history, personal workflows, and private protocols that shouldn't be in a public repository.
Diffstat (limited to 'docs/workflows/email.org')
-rw-r--r--docs/workflows/email.org198
1 files changed, 0 insertions, 198 deletions
diff --git a/docs/workflows/email.org b/docs/workflows/email.org
deleted file mode 100644
index cfd7adf..0000000
--- a/docs/workflows/email.org
+++ /dev/null
@@ -1,198 +0,0 @@
-#+TITLE: Email Workflow
-#+AUTHOR: Craig Jennings & Claude
-#+DATE: 2026-01-26
-
-* Overview
-
-This workflow sends emails with optional attachments via msmtp using the cmail account (c@cjennings.net via Proton Bridge).
-
-* When to Use This Workflow
-
-When Craig says:
-- "email workflow" or "send an email"
-- "email [person] about [topic]"
-- "send [file] to [person]"
-
-* Required Information
-
-Before sending, gather and confirm:
-
-1. **To:** (required) - recipient email address(es)
-2. **CC:** (optional) - carbon copy recipients
-3. **BCC:** (optional) - blind carbon copy recipients
-4. **Subject:** (required) - email subject line
-5. **Body:** (required) - email body text
-6. **Attachments:** (optional) - file path(s) to attach
-
-* The Workflow
-
-** Step 1: Gather Missing Information
-
-If any required fields are missing, prompt Craig:
-
-#+begin_example
-To send this email, I need:
-- To: [who should receive this?]
-- Subject: [what's the subject line?]
-- Body: [what should the email say?]
-- Attachments: [any files to attach?]
-- CC/BCC: [anyone to copy?]
-#+end_example
-
-** Step 2: Validate Email Addresses
-
-Look up all recipient names/emails in the contacts file:
-
-#+begin_src bash
-grep -i "[name or email]" ~/sync/org/contacts.org
-#+end_src
-
-**Note:** If contacts.org is empty, check for sync-conflict files:
-#+begin_src bash
-ls ~/sync/org/contacts*.org
-#+end_src
-
-For each recipient:
-1. Search contacts by name or email
-2. Confirm the email address matches
-3. If name not found, ask Craig to confirm the email is correct
-4. If multiple emails for a contact, ask which one to use
-
-** Step 3: Confirm Before Sending
-
-Display the complete email for review:
-
-#+begin_example
-Ready to send:
-
-From: c@cjennings.net
-To: [validated email(s)]
-CC: [if any]
-BCC: [if any]
-Subject: [subject]
-
-[body text]
-
-Attachments: [list files if any]
-
-Send this email? [Y/n]
-#+end_example
-
-** Step 4: Send the Email
-
-Use Python to construct MIME message and pipe to msmtp:
-
-#+begin_src python
-python3 << 'EOF' | msmtp -a cmail [recipient]
-import sys
-from email.mime.multipart import MIMEMultipart
-from email.mime.text import MIMEText
-from email.mime.application import MIMEApplication
-from email.utils import formatdate
-import os
-
-msg = MIMEMultipart()
-msg['From'] = 'c@cjennings.net'
-msg['To'] = '[to_address]'
-# msg['Cc'] = '[cc_address]' # if applicable
-# msg['Bcc'] = '[bcc_address]' # if applicable
-msg['Subject'] = '[subject]'
-msg['Date'] = formatdate(localtime=True)
-
-body = """[body text]"""
-msg.attach(MIMEText(body, 'plain'))
-
-# For each attachment:
-# pdf_path = '/path/to/file.pdf'
-# with open(pdf_path, 'rb') as f:
-# attachment = MIMEApplication(f.read(), _subtype='pdf')
-# attachment.add_header('Content-Disposition', 'attachment', filename='filename.pdf')
-# msg.attach(attachment)
-
-print(msg.as_string())
-EOF
-#+end_src
-
-**Important:** When there are CC or BCC recipients, pass ALL recipients to msmtp:
-#+begin_src bash
-python3 << 'EOF' | msmtp -a cmail to@example.com cc@example.com bcc@example.com
-#+end_src
-
-** Step 5: Verify Delivery
-
-Check the msmtp log for confirmation:
-
-#+begin_src bash
-tail -3 ~/.msmtp.cmail.log
-#+end_src
-
-Look for: ~smtpstatus=250~ and ~exitcode=EX_OK~
-
-** Step 6: Sync to Sent Folder (Optional)
-
-If Craig wants the email in his Sent folder:
-
-#+begin_src bash
-mbsync cmail
-#+end_src
-
-* msmtp Configuration
-
-The cmail account should be configured in ~/.msmtprc:
-
-#+begin_example
-account cmail
-tls_certcheck off
-auth on
-host 127.0.0.1
-port 1025
-protocol smtp
-from c@cjennings.net
-user c@cjennings.net
-passwordeval "cat ~/.config/.cmailpass"
-tls on
-tls_starttls on
-logfile ~/.msmtp.cmail.log
-#+end_example
-
-**Note:** ~tls_certcheck off~ is used because Proton Bridge uses self-signed certificates on localhost.
-
-* Attachment Handling
-
-** Supported Types
-
-Common MIME subtypes:
-- PDF: ~_subtype='pdf'~
-- Images: ~_subtype='png'~, ~_subtype='jpeg'~
-- Text: ~_subtype='plain'~
-- Generic: ~_subtype='octet-stream'~
-
-** Multiple Attachments
-
-Add multiple attachment blocks before ~print(msg.as_string())~
-
-* Troubleshooting
-
-** Password File Missing
-Ensure ~/.config/.cmailpass exists with the Proton Bridge SMTP password.
-
-** TLS Certificate Errors
-Use ~tls_certcheck off~ in msmtprc for Proton Bridge (localhost only).
-
-** Proton Bridge Not Running
-Start Proton Bridge before sending. Check if port 1025 is listening:
-#+begin_src bash
-ss -tlnp | grep 1025
-#+end_src
-
-* Example Usage
-
-Craig: "email workflow - send the November 3rd SOV to Christine"
-
-Claude:
-1. Searches contacts for "Christine" -> finds cciarmello@gmail.com
-2. Asks for subject and body if not provided
-3. Locates the SOV file in assets/
-4. Shows confirmation
-5. Sends via msmtp
-6. Verifies delivery in log