Customising the email sent
#
The default email- From: [email protected], but the user will see your app name
- Subject:
Email verification instructions

This is achieved by calling an API provided by us (https://api.supertokens.com
). The backend SDK calls our API with the verify email link, app name and the email of the end user.
security
- We do not log / store any of this information in our servers.
- For production use, we recommend that you use the feature to send emails yourself (see below section), using your own domain. This will make it easier for end users to trust the email (since it's coming from your domain, and not from @supertokens.com)
#
Send a custom emailYou can take full control of sending an email verification email by providing the createAndSendCustomEmail
function during init
function call:
- NodeJS
- GoLang
- Python
import supertokens from "supertokens-node";import EmailPassword from "supertokens-node/recipe/emailpassword";import Session from "supertokens-node/recipe/session";
supertokens.init({ appInfo: { apiDomain: "...", appName: "...", websiteDomain: "..." }, recipeList: [ EmailPassword.init({ emailVerificationFeature: { createAndSendCustomEmail: async (user, emailVerificationURLWithToken) => { let { id, email } = user; // TODO: } } }), Session.init() ]});
import ( "github.com/supertokens/supertokens-golang/recipe/emailpassword" "github.com/supertokens/supertokens-golang/recipe/emailpassword/epmodels" "github.com/supertokens/supertokens-golang/supertokens")
func main() { supertokens.Init(supertokens.TypeInput{ RecipeList: []supertokens.Recipe{ emailpassword.Init(&epmodels.TypeInput{ EmailVerificationFeature: &epmodels.TypeInputEmailVerificationFeature{ CreateAndSendCustomEmail: func(user epmodels.User, emailVerificationURLWithToken string, userContext supertokens.UserContext) { // TODO: Create and send verification email }, }, }), }, })}
from supertokens_python import init, InputAppInfofrom supertokens_python.recipe.emailpassword.types import Userfrom supertokens_python.recipe import emailpasswordfrom typing import Dict, Any
async def create_and_send_custom_email(user: User, email_verification_url: str, user_context: Dict[str, Any]): pass # TODO
init( app_info=InputAppInfo(api_domain="...", app_name="...", website_domain="..."), framework='...', recipe_list=[ emailpassword.init( email_verification_feature=emailpassword.InputEmailVerificationConfig( create_and_send_custom_email=create_and_send_custom_email ) ) ])
- You can get the user's email via the
user
input param. - Your email must direct the user to open the
emailVerificationURLWithToken
link. This link is a full URL, with the email verification token. It points to the email verification page on your website (/auth/email-verify
by default). - Any errors thrown from this function will be ignored.
important
When using this callback, you must manage sending the email yourself.