Send Newsletters from WordPress with Gmail or Microsoft 365

· 8 min read

You already have a Gmail, Google Workspace or Microsoft 365 mailbox. So why pay a newsletter service per subscriber? This tutorial shows how to send a newsletter from WordPress with Gmail or Microsoft 365, using the free Optcatch plugin. You connect your mailbox with OAuth2, set a daily limit and a sending speed, and let the plugin pace your campaign in the background.

Why send through your own mailbox

By default, WordPress sends mail through your web server's PHP mail. That mail often has no SPF or DKIM signature. The result: your newsletter lands in spam, or Gmail and Outlook reject it outright.

When you send through Google or Microsoft instead, outgoing mail goes through their mail servers and is signed there. Your recipients see a real address from a real mailbox.

Optcatch captures consented contacts from your existing forms and sends campaigns through one or several of your own sending accounts. The free version has no usage limits: unlimited contacts, segments and custom templates, and any number of sending accounts with rotation, daily limits and sending speed.

What you need before you start

  • A WordPress site with Optcatch installed (see getting started) from the plugin page on WordPress.org.
  • A Gmail or Google Workspace mailbox, or a Microsoft 365 / Outlook.com mailbox.
  • Access to Google Cloud Console (for Google) or the Azure Portal / Microsoft Entra ID (for Microsoft), so you can register your site as an app.

Why register an app? WordPress runs on your own server. Google and Microsoft want your site registered as an authorized OAuth client before it can send mail for you. In return, WordPress never stores your mailbox password. It stores a token, and that token is refreshed automatically in the background.

All settings below live under Optcatch → Settings → Sending Accounts. Click Add sending account and choose your provider.

Connect Gmail or Google Workspace with OAuth2

In Optcatch, choose Google as the provider. The settings screen and the in-plugin guide show your site's exact Authorized Redirect URI with a Copy button. You will need it in a moment.

Then, in Google Cloud Console:

  1. Create or select a project, then configure the OAuth consent screen.
  2. Go to Credentials, click Create Credentials → OAuth client ID, and choose the application type Web application.
  3. Paste the redirect URI from Optcatch into Authorized redirect URIs and click Create.
  4. Copy the Client ID and Client Secret.

Back in Optcatch, paste the Client ID and Client Secret and click Sign in with Google / Connect. Sign in with the mailbox you want to send from and approve access.

That's it. No password is saved in WordPress.

Quicker alternative: if you don't want a Google Cloud project, Optcatch also supports a Google App Password (legacy SMTP). You create a 16-character app password in your Google Account and paste it into Optcatch. OAuth2 is the recommended method, because tokens refresh on their own and a password change won't break your campaigns.

Connect Microsoft 365 or Outlook with OAuth2

Choose Microsoft as the provider. Again, copy the Redirect URI shown by Optcatch.

Then, in the Azure Portal:

  1. Open App registrations and click New registration. Give it a name, for example "Optcatch Mailer".
  2. Under Supported account types, select "Accounts in any organizational directory and personal Microsoft accounts" (or just your organization's directory).
  3. Under Redirect URI, select Web, paste the Optcatch redirect URI, and click Register.
  4. On the app's Overview page, copy the Application (Client) ID.
  5. Go to Certificates & secrets → New client secret, click Add, and copy the secret Value right away. Do not copy the Secret ID.

In Optcatch, paste the Application (Client) ID and Client Secret, then click Sign in with Microsoft / Connect.

As with Google, no mailbox password is stored. Optcatch uses Microsoft's OAuth2 flow and the Microsoft Graph API only to authenticate and send your mail.

Alternative: for Outlook.com accounts, or Microsoft 365 tenants where an admin has enabled authenticated SMTP, you can use Basic SMTP (Legacy Password) with your password or an app password. Many Microsoft 365 tenants have this turned off, so OAuth2 is the safer choice.

Set your From name and send a test

Inside each account card, click + Add sender email to set the From Email and Company / From Name. Use the address of the mailbox you connected. A @gmail.com or @outlook.com address is fine here, because you are sending through that provider's own account.

At the bottom of the Settings page, enter your own address and click Send Test Email. Check that it lands in your inbox and that the From details look right. In Gmail you can open the message, click the three dots, choose Show original, and confirm SPF and DKIM both say PASS.

Daily limits and sending speed

Every sending account has two controls:

  • Daily Sending Limit – the most emails this account sends in one day. The day runs from midnight to midnight in your site's time zone (Settings → General).
  • Sending Speed – the most emails this account sends in any 60 seconds.

Mailbox providers watch how suddenly volume appears on an address. A few hundred emails on day one from an address that never sent bulk mail is a fast way into spam. The in-plugin guide suggests starting low on a new address, for example 50 a day, and raising it yourself over two to four weeks.

Google and Microsoft also set their own sending limits, and those depend on your account type and change over time. Check your provider's current limits and keep your daily limit well below them.

When an account reaches its daily limit, sending stops for that account. Waiting emails resume within about 15 minutes after the account's next midnight, oldest first. If you raise the limit during the day, waiting campaigns pick up again on the next background check. You don't have to wait for midnight.

You can change both settings at any time under Optcatch → Settings. The remaining allowance for today is recalculated straight away.

How even spread keeps sending steady

A daily limit alone could still send the whole day's allowance in the first few minutes. Optcatch avoids that by spreading mail across the day.

The sustained rate is your daily limit divided by 24, rounded up, per hour. With a daily limit of 50, that is 3 emails per hour, or about one every 20 minutes. An account that has been idle may send a short burst first, but never more than its Sending Speed.

In practice, three limits apply at once, and the smallest one wins:

  1. the daily limit
  2. the even spread across the day
  3. the sending speed per minute

So a 500-recipient newsletter on a 50-a-day account takes about ten days. That sounds slow. It's also what a healthy, low-risk sending pattern looks like. The campaign shows why it is waiting, for example "Deferred — daily cap (resumes <time>)", so you are never left guessing.

Rotate across several accounts

Need more volume without pushing one mailbox too hard? Add more sending accounts. This is included in the free version, with no cap on the number of accounts.

How rotation works:

  • Each email goes to the account with the most daily allowance left.
  • Every account keeps its own daily limit and sending speed.
  • If one account has several From addresses, those addresses take turns.

You can mix providers, for example one Google Workspace mailbox and one Microsoft 365 mailbox. A paused or failing account never blocks a healthy one. The Dashboard shows sent and failed counts per sending account.

The circuit breaker: automatic pause when the provider rejects mail

Sometimes a provider starts refusing mail. Maybe a token expired, or the account hit a limit on the provider's side. Hammering it with more attempts only makes things worse.

Optcatch has a circuit breaker for this. An account is paused automatically after three failed sends in a row, or after one authentication failure. The first pause lasts one hour. If the account trips the breaker again, the second pause lasts 24 hours. One successful send resets the count.

While one account is paused, your other accounts keep sending. Failures on the contact's side (a missing or invalid contact record, or a template error) do not count against the account's allowance; a rejection or bounce from the provider does.

Each email is sent at most once. If the plugin cannot tell whether a send went through, it marks it as "uncertain" and does not send it again. So nobody gets your newsletter twice.

What about warm-up? (Pro)

In the free version you raise the daily limit by hand. Automated warm-up is an Optcatch Pro feature. Pro starts a new account at a safe daily volume and raises the limit day by day. You set the start, the growth and the ceiling. The next day's higher limit only unlocks once a day has really used most of its allowance.

Everything in this tutorial except warm-up works in the free version. Optcatch Pro is a separate plugin available from optcatch.com that adds the Pro-only features, warm-up included: see the Pro features.

Summary

To send a newsletter from WordPress with Gmail or Microsoft 365:

  1. Install Optcatch from WordPress.org.
  2. Register an app in Google Cloud Console or the Azure Portal and copy the client ID and secret.
  3. Connect the mailbox under Optcatch → Settings → Sending Accounts. No mailbox password is stored.
  4. Set a low daily limit and a sending speed, then send a test.
  5. Add more accounts for rotation if you need more volume.
  6. Let even spread and the circuit breaker keep your sending steady.

Start small, watch the Dashboard, and raise your limits as your address builds a track record.

Try it on your own forms

Optcatch is free on WordPress.org, with no usage limits. Install it, connect a sending account and your existing forms start building a consented list.