Skip to main content

Change email content

To change the content of the default email templates, you can override the getContent function in the emailDelivery object. It allows you to return an object that has the following properties:

  • body: This is the email's body. This can be HTML or just text as well.
  • isHtml: If the body is HTML, then this should be true.
  • subject: This is the subject of the email to send.
  • toEmail: The email will be sent to this email.

Other information like which email ID to send from is specified in the smtpSettings object.

import supertokens from "supertokens-node";import ThirdPartyEmailPassword from "supertokens-node/recipe/thirdpartyemailpassword";import Session from "supertokens-node/recipe/session";import { STMPService } from "supertokens-node/recipe/thirdpartyemailpassword/emaildelivery";
supertokens.init({    appInfo: {        apiDomain: "...",        appName: "...",        websiteDomain: "..."    },    recipeList: [        ThirdPartyEmailPassword.init({            emailDelivery: {                service: new STMPService({                    smtpSettings: { /*...*/ },                    override: (originalImplementation) => {                        return {                            ...originalImplementation,                            getContent: async function (input) {                                if (input.type === "EMAIL_VERIFICATION") {                                    // email verification content                                    let { emailVerifyLink, user } = input;
                                    // send some custom email content                                    return {                                        body: "EMAIL BODY",                                        isHtml: true,                                        subject: "Some subject",                                        toEmail: user.email                                    }                                } else {                                    // password reset content                                    let { passwordResetLink, user } = input;
                                    // you can even call the original implementation and modify that                                    let originalContent = await originalImplementation.getContent(input)                                    originalContent.subject = "My custom subject";                                    return originalContent;                                }                            }                        }                    }                })            }        }),        Session.init()    ]});