added /dist
This commit is contained in:
Vendored
+70
@@ -0,0 +1,70 @@
|
||||
import 'server-only';
|
||||
import nodemailer from 'nodemailer';
|
||||
import { getSiteIntegrations } from '../payload/index.js';
|
||||
/**
|
||||
* Sends an email using SMTP settings from the SiteIntegrations global.
|
||||
*
|
||||
* Reads config at call time (not at boot) so editors can change SMTP in the
|
||||
* admin panel without a restart — consistent with the plugin's panel-managed
|
||||
* model. `server-only` keeps the SMTP password out of any client bundle.
|
||||
*
|
||||
* Returns a result object rather than throwing, so callers (e.g. form
|
||||
* submission) can handle failure without a try/catch and never leak SMTP
|
||||
* details to the client.
|
||||
*/ export async function sendEmail({ from, html, payload, replyTo, subject, text, to }) {
|
||||
const smtp = await getSiteIntegrations(payload);
|
||||
const host = smtp.smtpHost;
|
||||
const port = smtp.smtpPort ?? 587;
|
||||
const user = smtp.smtpUser;
|
||||
const pass = smtp.smtpPassword;
|
||||
if (!host || !user || !pass) {
|
||||
return {
|
||||
error: 'SMTP is not configured in Site Integrations.',
|
||||
sent: false
|
||||
};
|
||||
}
|
||||
const fromAddress = from ?? smtp.smtpFromAddress;
|
||||
if (!fromAddress) {
|
||||
return {
|
||||
error: 'No from-address configured.',
|
||||
sent: false
|
||||
};
|
||||
}
|
||||
const fromName = smtp.smtpFromName;
|
||||
const fromHeader = fromName ? `${fromName} <${fromAddress}>` : fromAddress;
|
||||
const transporter = nodemailer.createTransport({
|
||||
auth: {
|
||||
pass,
|
||||
user
|
||||
},
|
||||
host,
|
||||
port,
|
||||
secure: port === 465
|
||||
});
|
||||
try {
|
||||
const info = await transporter.sendMail({
|
||||
from: fromHeader,
|
||||
html,
|
||||
subject,
|
||||
to,
|
||||
...text ? {
|
||||
text
|
||||
} : {},
|
||||
...replyTo ? {
|
||||
replyTo
|
||||
} : {}
|
||||
});
|
||||
return {
|
||||
messageId: info.messageId,
|
||||
sent: true
|
||||
};
|
||||
} catch (err) {
|
||||
payload.logger.error(`[ipal] Email send failed: ${err.message}`);
|
||||
return {
|
||||
error: 'Failed to send email.',
|
||||
sent: false
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
//# sourceMappingURL=sendEmail.js.map
|
||||
Reference in New Issue
Block a user