PHPackages                             madebythink/craft-microsoft-365-mail-transport - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Mail &amp; Notifications](/categories/mail)
4. /
5. madebythink/craft-microsoft-365-mail-transport

ActiveCraft-plugin[Mail &amp; Notifications](/categories/mail)

madebythink/craft-microsoft-365-mail-transport
==============================================

Microsoft 365 Mail Transport plugin for CraftCMS developed by Think

v4.0.0(10mo ago)06↓77.8%proprietaryPHP &gt;=8.2

Since Jul 1Compare

[ Source](https://github.com/madebythink/craft-microsoft-365-mail-transport)[ Packagist](https://packagist.org/packages/madebythink/craft-microsoft-365-mail-transport)[ RSS](/packages/madebythink-craft-microsoft-365-mail-transport/feed)WikiDiscussions Synced 1w ago

READMEChangelog (6)Dependencies (5)Versions (9)Used By (0)

Microsoft365 Mail Transport for Craft CMS
=========================================

[](#microsoft365-mail-transport-for-craft-cms)

This plugin allows Craft CMS to send email using the Microsoft Graph API, authenticating with OAuth 2.0.

Requirements
------------

[](#requirements)

- Craft CMS 5.0+
- PHP 8.0+
- An Azure Active Directory account with permissions to create and manage App Registrations.
- A licensed Microsoft 365 mailbox to send email from.

Installation
------------

[](#installation)

1. Install with Composer: ```
    composer require madebythink/craft-microsoft-365-mail-transport
    ```
2. In the Craft Control Panel, go to Settings &gt; Plugins and install the "Microsoft 365 Mail Transport" plugin.

Azure App Registration Setup
----------------------------

[](#azure-app-registration-setup)

You must create an App Registration in Azure AD to get the credentials this plugin needs.

1. **Log in** to the [Azure Portal](https://portal.azure.com/).
2. Navigate to **Azure Active Directory**.
3. Go to **App registrations** and click **+ New registration**.
4. Give your application a **Name** (e.g., "Craft CMS Mailer").
5. For **Supported account types**, select **"Accounts in this organizational directory only (Single tenant)"**.
6. Click **Register**.

### Step 1: Get Tenant ID and Client ID

[](#step-1-get-tenant-id-and-client-id)

- On the **Overview** page for your new app registration, copy the **Directory (tenant) ID** and the **Application (client) ID**. You will need these for the plugin settings in Craft.

### Step 2: Create a Client Secret

[](#step-2-create-a-client-secret)

1. In the app registration menu, go to **Certificates &amp; secrets**.
2. Click **+ New client secret**.
3. Give it a description (e.g., "Craft Plugin Secret") and choose an expiry duration.
4. Click **Add**.
5. **IMMEDIATELY COPY THE "VALUE"**. This is your Client Secret. It will be hidden after you leave this page.

### Step 3: Grant API Permissions

[](#step-3-grant-api-permissions)

1. In the app registration menu, go to **API permissions**.
2. Click **+ Add a permission**.
3. Select **Microsoft Graph**.
4. Select **Application permissions**. (Important: NOT "Delegated permissions").
5. In the "Select permissions" search box, type `Mail.Send` and check the box next to **Mail.Send**.
6. Click **Add permissions**.

### Step 4: Grant Admin Consent

[](#step-4-grant-admin-consent)

- Because you added an *Application* permission, an administrator must grant consent.
- On the **API permissions** page, click the **"Grant admin consent for \[Your Directory Name\]"** button. The status for the `Mail.Send` permission should change to "Granted".

Plugin Configuration
--------------------

[](#plugin-configuration)

1. In the Craft Control Panel, go to **Settings &gt; Email**.
2. For the **Transport Type**, select **"Microsoft 365 (Graph API)"**.
3. Fill in the settings fields with the values you copied from Azure:
    - **Tenant ID**: Your Directory (tenant) ID.
    - **Client ID**: Your Application (client) ID.
    - **Client Secret**: The secret *value* you created.
    - **From Email Address**: The email address of the licensed mailbox you want to send emails from (e.g., `noreply@yourdomain.com`).
4. Save the settings and use the "Test" utility to send a test email.

It's highly recommended to store your credentials as environment variables in your `.env` file and reference them in the settings fields (e.g., `$M365_CLIENT_ID`).

###  Health Score

31

—

LowBetter than 65% of packages

Maintenance53

Moderate activity, may be stable

Popularity4

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity55

Maturing project, gaining track record

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~12 days

Total

8

Last Release

329d ago

Major Versions

v1.0.2 → v3.0.02025-08-15

v3.0.1 → v4.0.02025-09-29

PHP version history (2 changes)v1.0.0PHP &gt;=8.2

v3.0.0PHP &gt;=7.4

### Community

Maintainers

![](https://www.gravatar.com/avatar/03a266bac1acb5c906b91965fdfc928dd101eecd8ae9f55311d7551b36bb52a9?d=identicon)[madebythink](/maintainers/madebythink)

### Embed Badge

![Health badge](/badges/madebythink-craft-microsoft-365-mail-transport/health.svg)

```
[![Health](https://phpackages.com/badges/madebythink-craft-microsoft-365-mail-transport/health.svg)](https://phpackages.com/packages/madebythink-craft-microsoft-365-mail-transport)
```

###  Alternatives

[tempest/framework

The PHP framework that gets out of your way.

2.3k37.6k21](/packages/tempest-framework)[civicrm/civicrm-core

Open source constituent relationship management for non-profits, NGOs and advocacy organizations.

762297.9k53](/packages/civicrm-civicrm-core)[neuron-core/neuron-ai

The PHP Agentic Framework.

2.0k832.6k56](/packages/neuron-core-neuron-ai)[xeroapi/xero-php-oauth2

Xero official PHP SDK for oAuth2 generated with OpenAPI spec 3

1074.9M20](/packages/xeroapi-xero-php-oauth2)[eslazarev/wildberries-sdk

Wildberries OpenAPI clients (generated).

353.6k](/packages/eslazarev-wildberries-sdk)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
