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..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/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..1611a051e 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); } @@ -170,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,