From da9933c2473b599a8a749db17044cb5df160f14d Mon Sep 17 00:00:00 2001 From: Corie Watson Date: Thu, 10 Jul 2025 11:57:54 +0100 Subject: [PATCH 1/2] fix(firestore-send-email) restore headers support --- firestore-send-email/CHANGELOG.md | 8 +++++++ firestore-send-email/PREINSTALL.md | 23 +++++++++++++++++++ firestore-send-email/README.md | 25 +++++++++++++++++++++ firestore-send-email/functions/src/index.ts | 1 + 4 files changed, 57 insertions(+) diff --git a/firestore-send-email/CHANGELOG.md b/firestore-send-email/CHANGELOG.md index 6d30cd4a0..d70db6e19 100644 --- a/firestore-send-email/CHANGELOG.md +++ b/firestore-send-email/CHANGELOG.md @@ -1,3 +1,11 @@ +## Version 0.2.4 + +fix: add missing 'headers' field to the mailOptions interface + +docs: update documentation to include 'headers' field + +fix: TTL expire type "week" fixed (#2455) + ## Version 0.2.3 fix: remove strict validation of email "from" field diff --git a/firestore-send-email/PREINSTALL.md b/firestore-send-email/PREINSTALL.md index db67bafb1..30ab98009 100644 --- a/firestore-send-email/PREINSTALL.md +++ b/firestore-send-email/PREINSTALL.md @@ -18,6 +18,29 @@ You can also optionally configure this extension to render emails using [Handleb When you configure this extension, you'll need to supply your **SMTP credentials for mail delivery**. Note that this extension is for use with bulk email service providers, like SendGrid, Mailgun, etc. +#### Using custom headers + +You can add custom headers to your emails by including a `headers` field in the document you add to the Firestore collection. The `headers` field should be an object where each key is the header name and the value is the header value. + +## Example JSON with Custom Headers: +```json +{ + "to": ["example@example.com"], + "message": { + "subject": "Test Email with Custom Headers", + "text": "This is a test email to see if custom headers work.", + "html": "This is a test email to see if custom headers work." + }, + "headers": { + "X-Custom-Header": "CustomValue", + "X-Another-Header": "AnotherValue", + } +} +``` + +Add this document to the Firestore mail collection to send an email with custom headers. +You can even include headers like 'List-Unsubscribe' to allow recipients to unsubscribe from your emails. + #### Firestore-Send-Email: SendGrid Categories When using SendGrid (`SMTP_CONNECTION_URI` includes `sendgrid.net`), you can assign categories to your emails. diff --git a/firestore-send-email/README.md b/firestore-send-email/README.md index b12c67c37..8a8660d10 100644 --- a/firestore-send-email/README.md +++ b/firestore-send-email/README.md @@ -26,6 +26,29 @@ You can also optionally configure this extension to render emails using [Handleb When you configure this extension, you'll need to supply your **SMTP credentials for mail delivery**. Note that this extension is for use with bulk email service providers, like SendGrid, Mailgun, etc. +#### Using custom headers + +You can add custom headers to your emails by including a `headers` field in the document you add to the Firestore collection. The `headers` field should be an object where each key is the header name and the value is the header value. + +## Example JSON with Custom Headers: +```json +{ + "to": ["example@example.com"], + "message": { + "subject": "Test Email with Custom Headers", + "text": "This is a test email to see if custom headers work.", + "html": "This is a test email to see if custom headers work." + }, + "headers": { + "X-Custom-Header": "CustomValue", + "X-Another-Header": "AnotherValue", + } +} +``` + +Add this document to the Firestore mail collection to send an email with custom headers. +You can even include headers like 'List-Unsubscribe' to allow recipients to unsubscribe from your emails. + #### Firestore-Send-Email: SendGrid Categories When using SendGrid (`SMTP_CONNECTION_URI` includes `sendgrid.net`), you can assign categories to your emails. @@ -305,3 +328,5 @@ password) This extension will operate with the following project IAM roles: * datastore.user (Reason: Allows this extension to access Cloud Firestore to read and process added email documents.) + +Error: An unexpected error has occurred. diff --git a/firestore-send-email/functions/src/index.ts b/firestore-send-email/functions/src/index.ts index 2af1518a6..6f9a14230 100644 --- a/firestore-send-email/functions/src/index.ts +++ b/firestore-send-email/functions/src/index.ts @@ -170,6 +170,7 @@ async function deliver(ref: DocumentReference): Promise { subject: payload.message?.subject, text: payload.message?.text, html: payload.message?.html, + headers: payload?.headers, attachments: payload.message?.attachments, categories: payload.categories, templateId: payload.sendGrid?.templateId, From a5f88245bd6394f2d844ff50ceeae067da4f3fe6 Mon Sep 17 00:00:00 2001 From: Corie Watson Date: Thu, 10 Jul 2025 12:06:11 +0100 Subject: [PATCH 2/2] fix(firestore-send-email): readme --- firestore-send-email/README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/firestore-send-email/README.md b/firestore-send-email/README.md index 8a8660d10..8db815d18 100644 --- a/firestore-send-email/README.md +++ b/firestore-send-email/README.md @@ -328,5 +328,3 @@ password) This extension will operate with the following project IAM roles: * datastore.user (Reason: Allows this extension to access Cloud Firestore to read and process added email documents.) - -Error: An unexpected error has occurred.