1

I learned about firebase and cloud functions recently and have been able to develop simple applications with them.

I now want to expand my knowledge and really struggling with Trigger Email Extension.

On a specific event on my firebase, I want to fire an email to the user in a custom format, but I am unable to even activate the extension for now. Can someone please explain with example please about these fields marked in the picture?

attach

Frank van Puffelen
  • 565,676
  • 79
  • 828
  • 807
DJS
  • 15
  • 4

1 Answers1

1

I had this question too, but got it resolved. Here's your answer:

"Email documents collection" is the collection that will be read to trigger the emails. I recommend leaving named "mail" unless you already have a collection named mail.

"Users collection (Optional)" refers to a collection (if any) that you want to use in tandem with a user auth system. I haven't had this specific use case yet, but I imagine once you understand how Trigger Email operates, it should be somewhat self-explanatory.

"Templates collection (Optional)" is helpful for templates in which you can use handlebar.js is automatically input specific information per user. (eg. <p>Hello, {{first_name}}</p> etc.) Similar to the previously mentioned collections, you can name it whatever you want.

How to create a template (I have yet to actually implement this, so take this with a grain of salt): In your templates collection, you want to name each document with a memorable ID. Firebase gives the example:

{
  subject: "@{{username}} is now following you!",
  html: "Just writing to let you know that <code>@{{username}}</code> ({{name}}) is now following you.",
  attachments: [
    {
     filename: "{{username}}.jpg",
     path: "{{imagePath}}" 
    }
  ]
}

...specifying a good ID would be following. As you can see, the documents should be structured just like any other email you would send out.

Here is an example of using the above template in javascript:

firestore()
  .collection("mail")
    .add({
      toUids: ["abc123"], // This relates to the Users Collection
      template: {
        name: "following", // Specify the template
        // Specify the information for the Handlebars
        // which can also be pulled from your users (toUids)
        // if you have the data stored in a user collection.
        // Of course that gets more into the world of a user auth system.
        data: {
          username: "ada",
          name: "Ada Lovelace",
          imagePath: "https://path-to-file/image-name.jpg"
        },
      },
    })

I hope this helps. Let me know if you have an issues getting this set up.

andrilla
  • 339
  • 1
  • 13