26 lines
1.2 KiB
TypeScript
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;
|