log errors

This commit is contained in:
mplorentz 2026-08-25 15:15:33 -04:00
parent 2088e1be4b
commit 77e35c26c7
2 changed files with 43 additions and 19 deletions

View file

@ -3,10 +3,13 @@ import { SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASSWORD, SMTP_FROM, MAILSHIP_NAM
import type { Subscription } from './alert.js'
import { render } from './templates.js'
const secure = Number(SMTP_PORT) === 465
const transporter = nodemailer.createTransport({
host: SMTP_HOST,
port: Number(SMTP_PORT),
secure: true,
secure,
requireTLS: !secure,
auth: {
user: SMTP_USER,
pass: SMTP_PASSWORD,
@ -16,7 +19,8 @@ const transporter = nodemailer.createTransport({
export const sendConfirm = (sub: Subscription) => {
const href = `${BASE_URL}/confirm?token=${sub.key}`
return transporter.sendMail({
return transporter
.sendMail({
from: SMTP_FROM,
to: sub.email,
subject: 'Confirm your email digest',
@ -27,10 +31,19 @@ export const sendConfirm = (sub: Subscription) => {
`,
text: `Please confirm that you would like to receive ${sub.frequency} digests by visiting: ${href}`,
})
.catch(error => {
console.error('mailer: confirmation email failed', {
to: sub.email,
smtp: { host: SMTP_HOST, port: SMTP_PORT },
error: error?.message || error,
})
throw error
})
}
export const sendDigest = async (sub: Subscription, variables: Record<string, any>) => {
return transporter.sendMail({
return transporter
.sendMail({
from: SMTP_FROM,
to: sub.email,
subject: 'New activity',
@ -40,4 +53,12 @@ export const sendDigest = async (sub: Subscription, variables: Record<string, an
unsubscribeUrl: `${BASE_URL}/unsubscribe?token=${sub.key}`,
}),
})
.catch(error => {
console.error('mailer: digest email failed', {
to: sub.email,
smtp: { host: SMTP_HOST, port: SMTP_PORT },
error: error?.message || error,
})
throw error
})
}

View file

@ -113,7 +113,10 @@ addRoute('post', '/subscription/email', async (req: Request, res: Response) => {
const result = await registerSubscription({ pubkey, email, frequency })
res.json(result)
} catch (error: any) {
// If the error is just Postmark failing, the subscription was still created
// The subscription was still created, but sending the confirmation email
// may have failed. Always log it so SMTP issues are visible.
console.error('Failed to send confirmation email for', pubkey, error?.message || error)
// Look up the actual subscription key from the DB
const sub = await getSubscriptionByPubkey(pubkey)
if (sub) {