Files
ipal-kit/dist/modules/email/mailAdapter.d.ts
T

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;