From d9d3d0cfa399b4c4564d685d51407cad0b600394 Mon Sep 17 00:00:00 2001 From: Corie Watson Date: Thu, 26 Jun 2025 18:02:36 +0100 Subject: [PATCH 1/2] fix(firestore-send-email): fix week ttl --- firestore-send-email/CHANGELOG.md | 4 ++++ firestore-send-email/extension.yaml | 2 +- firestore-send-email/functions/src/index.ts | 5 ++++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/firestore-send-email/CHANGELOG.md b/firestore-send-email/CHANGELOG.md index 6d30cd4a0..5ae1416af 100644 --- a/firestore-send-email/CHANGELOG.md +++ b/firestore-send-email/CHANGELOG.md @@ -1,3 +1,7 @@ +## Version 0.2.4 + +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/extension.yaml b/firestore-send-email/extension.yaml index d0b34a42a..a2bbe97ae 100644 --- a/firestore-send-email/extension.yaml +++ b/firestore-send-email/extension.yaml @@ -13,7 +13,7 @@ # limitations under the License. name: firestore-send-email -version: 0.2.3 +version: 0.2.4 specVersion: v1beta displayName: Trigger Email from Firestore diff --git a/firestore-send-email/functions/src/index.ts b/firestore-send-email/functions/src/index.ts index 2af1518a6..8346e6f57 100644 --- a/firestore-send-email/functions/src/index.ts +++ b/firestore-send-email/functions/src/index.ts @@ -114,7 +114,7 @@ function getExpireAt(startTime: Timestamp) { now.setDate(now.getDate() + value); break; case "week": - now.setDate(now.getDate() + value); + now.setDate(now.getDate() + value * 7); break; case "month": now.setMonth(now.getMonth() + value); @@ -122,6 +122,9 @@ function getExpireAt(startTime: Timestamp) { case "year": now.setFullYear(now.getFullYear() + value); break; + default: + // Optionally handle unknown types + throw new Error(`Unknown TTLExpireType: ${config.TTLExpireType}`); } return Timestamp.fromDate(now); } From f7fd9232f8d9ac843960169d59bef956ccf17f55 Mon Sep 17 00:00:00 2001 From: Corie Watson Date: Thu, 10 Jul 2025 12:17:58 +0100 Subject: [PATCH 2/2] fix(firestore-send-email) restore headers support (#2463) --- firestore-send-email/CHANGELOG.md | 4 ++++ firestore-send-email/PREINSTALL.md | 23 +++++++++++++++++++++ firestore-send-email/README.md | 23 +++++++++++++++++++++ firestore-send-email/functions/src/index.ts | 1 + 4 files changed, 51 insertions(+) diff --git a/firestore-send-email/CHANGELOG.md b/firestore-send-email/CHANGELOG.md index 5ae1416af..d70db6e19 100644 --- a/firestore-send-email/CHANGELOG.md +++ b/firestore-send-email/CHANGELOG.md @@ -1,5 +1,9 @@ ## 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 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..8db815d18 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. diff --git a/firestore-send-email/functions/src/index.ts b/firestore-send-email/functions/src/index.ts index 8346e6f57..1611a051e 100644 --- a/firestore-send-email/functions/src/index.ts +++ b/firestore-send-email/functions/src/index.ts @@ -173,6 +173,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,