29 lines
1.3 KiB
TypeScript
29 lines
1.3 KiB
TypeScript
import type { PayloadEmailAdapter } from 'payload';
|
|
import { type GraphAdapterArgs } from './graphAdapter.js';
|
|
import { type PanelSmtpAdapterArgs } from './panelSmtpAdapter.js';
|
|
export type MailAdapterArgs = {
|
|
fallbackFromAddress?: string;
|
|
fallbackFromName?: string;
|
|
graph?: GraphAdapterArgs;
|
|
smtp?: PanelSmtpAdapterArgs;
|
|
};
|
|
/**
|
|
* Dispatcher email adapter: wired into the config ONCE, but picks the transport
|
|
* (SMTP or Graph) per send by reading `emailTransport` from SiteIntegrations.
|
|
* This is what makes the choice switchable in the panel — Payload builds the
|
|
* email adapter at boot and can't swap it at runtime, so instead of choosing
|
|
* between two adapters at boot we install one that delegates on every send.
|
|
*
|
|
* Availability guard: Graph only runs if its agency credentials exist in env
|
|
* (this is *our* Exchange). If the panel says 'graph' but env isn't set up,
|
|
* we DON'T silently fail — we log clearly and fall back to SMTP, so a client
|
|
* flipping the switch without the backing config still gets mail out (over SMTP)
|
|
* rather than silent nothing. If neither is usable, the send reports an error.
|
|
*
|
|
* @example
|
|
* // payload.config.ts
|
|
* import { mailAdapter } from '@intecion/ipal-kit'
|
|
* email: mailAdapter()
|
|
*/
|
|
export declare const mailAdapter: (args?: MailAdapterArgs) => PayloadEmailAdapter;
|