LaunchFa.st makes it easier for you to send emails with SMTP2GO with an API and SDK baked-in, ready to use.
Make sure to update the .env
file or hosting provider’s environment variable to have the necessary variables for SMTP2GO:
# Obtain the SMTP2GO Username and Password
# https://support.smtp2go.com/hc/en-gb/articles/13645646122777-SMTP-Users
Following are the two methods with which you can send emails:
1. POST
ing to the baked-in API
To send emails over an API, setup a PRIVATE_ACCESS_KEY
environment variable, so that all the API calls do need to have that particular token as the x-access-key
header, match to what’s stored in the server. It is to ensure that the person sending the email is an admin / allowed to.
A. POST
ing to the emails API from a server-side API
Here’s how you’d make the request for each framework from the server-side:
import type { APIContext } from 'astro'
export async function GET ({ request } : APIContext ) {
// From a server-side API that is being fetched
await fetch ( new URL ( '/api/email/smtp2go/trigger' , new URL (event.request.url).origin). toString (), {
'Content-Type' : 'application/json' ,
'x-access-key' : env. PRIVATE_ACCESS_KEY ,
export async function POST ({ request } : APIContext ) {
// From a server-side API that is being POST-ed to
await fetch ( new URL ( '/api/email/smtp2go/trigger' , new URL (event.request.url).origin). toString (), {
'Content-Type' : 'application/json' ,
'x-access-key' : env. PRIVATE_ACCESS_KEY ,
import { env } from '$env/dynamic/private'
import type { RequestEvent } from './$types'
export async function GET ( event : RequestEvent ) {
// From a server-side API that is being fetched
await fetch ( new URL ( '/api/email/smtp2go' , new URL (event.request.url).origin). toString (), {
'Content-Type' : 'application/json' ,
'x-access-key' : env. PRIVATE_ACCESS_KEY ,
export async function POST ( event : RequestEvent ) {
// From a server-side API that is being POST-ed to
await fetch ( new URL ( '/api/email/smtp2go' , new URL (event.request.url).origin). toString (), {
'Content-Type' : 'application/json' ,
'x-access-key' : env. PRIVATE_ACCESS_KEY ,
B. POST
ing to the emails API from client-side
Here’s how you’d make the request for each framework from the client-side:
fetch ( '/api/email/smtp2go/trigger' , {
'Content-Type' : 'application/json' ,
'x-access-key' : 'Insert that private access token safely?' ,
fetch ( '/api/email/smtp2go' , {
'Content-Type' : 'application/json' ,
'x-access-key' : 'Insert that private access token safely?' ,
2. Use Nodemailer SDK inside your server-side code
Here’s how you’d make the request for each framework from the server-side with SDK:
import nodemailer from 'nodemailer'
import type { APIContext } from 'astro'
export async function POST ({ request } : APIContext ) {
// From a server-side API that is being POST-ed to
// Send an email using nodemailer
// https://www.smtp2go.com/setupguide/node-js-script/
const smtpTransport = nodemailer. createTransport ({
host: 'mail.smtp2go.com' ,
user: import . meta .env. SMTP2GO_USERNAME ,
pass: import . meta .env. SMTP2GO_PASSWORD ,
port: 2525 , // 8025, 587 and 25 can also be used.
await smtpTransport. sendMail ({
subject: context.subject,
from: context[ 'verified_sender' ] ?? 'jain71000@gmail.com' ,
to: typeof context.to === 'string' ? [context.to] : context.to,
import nodemailer from 'nodemailer'
import { env } from '$env/dynamic/private'
import type { RequestEvent } from './$types'
export async function GET ( event : RequestEvent ) {
// From a server-side API that is being fetched
// Send an email using nodemailer
// https://www.smtp2go.com/setupguide/node-js-script/
const smtpTransport = nodemailer. createTransport ({
host: 'mail.smtp2go.com' ,
user: env. SMTP2GO_USERNAME ,
pass: env. SMTP2GO_PASSWORD ,
port: 2525 , // 8025, 587 and 25 can also be used.
await smtpTransport. sendMail ({
subject: context.subject,
from: context[ 'verified_sender' ] ?? 'contact@launchfa.st' ,
to: typeof context.to === 'string' ? [context.to] : context.to,
export async function POST ( event : RequestEvent ) {
// From a server-side API that is being POST-ed to
// Send an email using nodemailer
// https://www.smtp2go.com/setupguide/node-js-script/
const smtpTransport = nodemailer. createTransport ({
host: 'mail.smtp2go.com' ,
user: env. SMTP2GO_USERNAME ,
pass: env. SMTP2GO_PASSWORD ,
port: 2525 , // 8025, 587 and 25 can also be used.
await smtpTransport. sendMail ({
subject: context.subject,
from: context[ 'verified_sender' ] ?? 'contact@launchfa.st' ,
to: typeof context.to === 'string' ? [context.to] : context.to,