WireMail Google

Send ProcessWire email through Gmail SMTP using an email address and Google App Password.

WireMail Google sends ProcessWire email through Gmail or Google Workspace using an email address and Google App Password.

WireMail Google

It is made for sites that want simple Gmail delivery without setting up a Google Cloud project or OAuth application: contact forms, password emails, order notices, booking confirmations and admin alerts.

Author: Maxim Semenov
Website: smnv.org
Email: maxim@smnv.org

If this project helps your work, consider supporting future development: GitHub Sponsors or smnv.org/sponsor.

What WireMail Google Does


  • Works with ProcessWire's normal $mail and wireMail() APIs.
  • Sends plain-text and HTML email.
  • Supports Reply-To, CC, BCC, custom headers and file attachments.
  • Handles Unicode subjects and names.
  • Keeps the Google App Password encrypted and hidden from the settings form.
  • Uses the configured Google account as the sender, helping contact forms avoid spoofing and delivery problems.
  • Shows configuration health, verified STARTTLS diagnostics and privacy-safe recent activity in ProcessWire Admin.

Installation


  1. Copy the WireMailGoogle folder into /site/modules/.
  2. In ProcessWire Admin, refresh modules.
  3. Install WireMail Google.
  4. Open the module settings.
  5. Enter the Gmail or Google Workspace address and its App Password.

Google App Passwords require 2-Step Verification. You can create one at Google App Passwords.

If the site has more than one WireMail provider, select this module in /site/config.php:

$config->wireMail('module', 'WireMailGoogle');

Website Integration


Continue using ProcessWire's standard mail API:

$sent = wireMail()
	->to('person@example.com', 'Person')
	->subject('Your request was received')
	->body('We received your request.')
	->bodyHTML('<p>We received your request.</p>')
	->send();

For a contact form, the visitor can be supplied with from(). WireMail Google keeps the configured account as the real sender and makes the visitor the Reply-To address, so replying still works naturally.

$sent = wireMail()
	->to('owner@example.com')
	->from($visitorEmail, $visitorName)
	->subject('Website enquiry')
	->body($message)
	->send();

Documentation


See API.md for exact calls, EXAMPLES.md for integration examples, and AGENTS.md for Olivia and coding-agent guidance.

Author


Maxim Semenov
smnv.org
maxim@smnv.org

License


MIT

More modules by Maxim Semenov

  • Context

    Export ProcessWire site context for AI development (JSON + TOON formats)
  • Mercato

    ProcessWire-native commerce toolkit: products, cart, checkout, orders, payments, discounts, fulfilment, inventory, recovery, reports, and demo storefront.
  • Ichiban (SEO control center)

    Comprehensive SEO module: meta/OG/schema, audit, redirects, revisions, email reports.
  • WireWall

    Advanced traffic firewall with VPN/Proxy/Tor detection, rate limiting, and JS challenge
  • Cookie

    Privacy & cookie consent management: banner, category-based async loading of scripts/embeds, consent log, Google Consent Mode v2, visual widget builder.
  • Ally (a11y)

    Self-hosted accessibility widget powered by Sienna (MIT). Adds font, contrast, language, and navigation tools to any page. No external CDN — the JS bundle is served from your own server.
  • Subscribe

    Newsletter subscription handler with lists, double opt-in, honeypot, rate limiting and unsubscribe link.
  • Squad

    AI integration for ProcessWire. Supports Anthropic, OpenAI, Google, xAI, and OpenRouter.
  • Invite Access

    Restricts site access to visitors with a valid invite code. Designed for staging environments with multiple teams.

All modules by Maxim Semenov

Install and use modules at your own risk. Always have a site and database backup before installing new modules.