Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

4.8KB

MassMailer

Windows HTA application under construction for individual marketing emails for a 9 x 12 postcard business.

Current build

  • Creates an Access .mdb with versioned tables for contacts, suppressions, templates, campaigns, attempts, protected secrets, and audit records.
  • Checks the configured provider, process architecture, MDB, and schema before launching the HTA.
  • Imports UTF-8 contacts from a previewed CSV and records global suppressions.
  • Imports constrained, well-formed HTML templates from TEMPLATE_ROOT, snapshots local PNG/JPEG/GIF images into the MDB, and previews the stored version in an untrusted HTA frame.
  • Stores the SMTP password as a Windows user-protected value in the MDB through an interactive local setup action.
  • Offers an explicit, single-message SMTP transport test to the configured SMTP_TEST_TO address. Campaign sending is not implemented yet.
  • Reviews a campaign against unsuppressed contacts, adds an advertisement, postal, and reply opt-out footer, tests the reviewed message only to the internal inbox, and records approval in a paused state.

The app sends no marketing messages in this build. Closing the HTA stops all in-app activity.

Setup on this PC

  1. Copy config.example.ini to config.ini and edit local settings. Set SMTP_TEST_TO to the owner-controlled test inbox. BUSINESS_POSTAL_ADDRESS remains blank until you supply it; campaign review and approval require it. Never place the SMTP password in the INI.
  2. Run C:\Windows\SysWOW64\cscript.exe //nologo tools\init-db.vbs once to create data\MassMailer.mdb. It refuses to overwrite an existing database.
  3. Run Start-MassMailer.cmd. The launcher selects the configured script architecture and opens the MDB before starting the HTA. Use C:\Windows\SysWOW64\cscript.exe //nologo tools\launch.vbs check to check startup without opening the UI.
  4. Import a UTF-8 CSV with an email header. Optional columns are business_name, source_reference, and acquired_at (YYYY-MM-DD). Supply a source reference in the CSV or the form; preview and review rejected rows before importing.
  5. Enter opt-out replies in the suppression form. Press Set or rotate SMTP password to enter the password locally, then press Send one internal test. The owner reports that this authenticated SMTP test worked on this PC; detailed received-image rendering has not been separately recorded.
  6. Put template files under TEMPLATE_ROOT and import them from the HTA. The accepted HTML subset and example are in templates/README.md. Imported versions are immutable snapshots. The template preview shows stored content, while the campaign preview adds the full footer.
  7. Fill in BUSINESS_POSTAL_ADDRESS in local config.ini. Enter a campaign name and subject, select an imported template, and press Review message and recipients. After checking the full preview, send the campaign-specific test to SMTP_TEST_TO and confirm it arrived. Approval records paused deliveries; it does not start sending.

Local config.ini, MDB files, logs, backups, and temporary test data are ignored by Git.

Verification

Run powershell.exe -NoProfile -ExecutionPolicy Bypass -File tools\test-contact-flow.ps1 for a disposable MDB integration check. It covers database initialization and preflight, protected password save/load/rotation using synthetic values, local MIME pickup with an inline image, contact import, duplicate rejection, and suppression. Run powershell.exe -NoProfile -ExecutionPolicy Bypass -File tools\test-template-flow.ps1 for template import, snapshot, preview, and unsafe-input checks. Run powershell.exe -NoProfile -ExecutionPolicy Bypass -File tools\test-campaign-flow.ps1 for recipient review, stale-review rejection, internal-only campaign MIME, and paused approval. C:\Windows\SysWOW64\cscript.exe //nologo //E:JScript tools\test-contacts.js covers CSV parsing and validation. powershell.exe -NoProfile -ExecutionPolicy Bypass -File tools\test-hta-syntax.ps1 checks the HTA script. powershell.exe -NoProfile -ExecutionPolicy Bypass -File tools\test-smtp-capabilities.ps1 checks the configured server's STARTTLS handshake without authenticating or sending mail.

Planning documents

System-wide settings belong in the INI; campaign settings, templates, contacts, queue state, and protected secrets belong in the Access MDB. Live campaign dispatch, pacing, recovery, and reporting are still under development.

Powered by TurnKey Linux.