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

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
- Copy the
WireMailGoogle folder into /site/modules/. - In ProcessWire Admin, refresh modules.
- Install WireMail Google.
- Open the module settings.
- 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