Skip to content

feat(email-resend): add Custom headers for the Resend adapter #15645

Open
fdurackbrooks wants to merge 1 commit intopayloadcms:mainfrom
fdurackbrooks:main
Open

feat(email-resend): add Custom headers for the Resend adapter #15645
fdurackbrooks wants to merge 1 commit intopayloadcms:mainfrom
fdurackbrooks:main

Conversation

@fdurackbrooks
Copy link

After some trying (and failing) to enable unsubscribe headers, I found that the Resend adapter does not pass custom headers from the Payload sendEmail options to the Resend API. When attempting to send an email with custom headers, they are ignored because the mapPayloadEmailToResendEmail function creates a new object that excludes the headers property.

await payload.sendEmail({
  from: "Test <test@domain.com>",
  to: "jimmybillbob@example.com",
  subject: "Resend adapter does not allow custom headers :(",
  html: html,
  headers: {
    "List-Unsubscribe": "<https://domain.com/unsubscribe>",
    "List-Unsubscribe-Post": "List-Unsubscribe=One-Click",
  },
});

I have recitified this by adding headers: message.headers, to the mapPayloadEmailToResendEmail in packages/email-resend/src/index.ts, as below.

function mapPayloadEmailToResendEmail(
  message: SendEmailOptions,
  defaultFromAddress: string,
  defaultFromName: string,
): ResendSendEmailOptions {
  return {
    // Required
    from: mapFromAddress(message.from, defaultFromName, defaultFromAddress),
    subject: message.subject ?? '',
    to: mapAddresses(message.to),

    // Other To fields
    bcc: mapAddresses(message.bcc),
    cc: mapAddresses(message.cc),
    reply_to: mapAddresses(message.replyTo),

    // Optional
    attachments: mapAttachments(message.attachments),
    html: message.html?.toString() || '',
    text: message.text?.toString() || '',
    headers: message.headers, // Added this line.
  } as ResendSendEmailOptions
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

Comments