Files

26 lines
1.2 KiB
TypeScript

import type { PayloadEmailAdapter } from 'payload';
export type GraphAdapterArgs = {
fallbackFromAddress?: string;
fallbackFromName?: string;
};
/**
* Payload email adapter that sends through Microsoft Graph (our Exchange),
* using app-only client-credentials auth. Drop-in alternative to
* panelSmtpAdapter — same PayloadEmailAdapter contract, so payload.sendEmail
* and the form-builder's submission emails work unchanged.
*
* Split of configuration (deliberate):
* - Graph credentials (tenant/client/secret/sender) = AGENCY secrets, from env.
* The client never sees or sets them — it's our Exchange, one mailbox
* (GRAPH_SENDER, e.g. [email protected]) for every project.
* - From-display + recipient = per-project, from the panel (SiteIntegrations),
* so an editor controls how the mail is labelled and where it lands.
*
* Wiring: email: process.env.GRAPH_CLIENT_ID ? graphAdapter() : panelSmtpAdapter()
*
* Azure setup (one-time, our side): App registration → Mail.Send APPLICATION
* permission → admin consent → in Exchange, grant the app "Send As" on the
* shared mailbox GRAPH_SENDER.
*/
export declare const graphAdapter: (args?: GraphAdapterArgs) => PayloadEmailAdapter;