Sending Emails with SMTP2GO
Dieser Inhalt ist noch nicht in deiner Sprache verfügbar.
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
SMTP2GO_USERNAME="..."SMTP2GO_PASSWORD="..."
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(), { method: 'POST', headers: { 'Content-Type': 'application/json', 'x-access-key': env.PRIVATE_ACCESS_KEY, }, body: JSON.stringify({ to: email, subject: 'How?', text: 'I love SMTP2GO.', }), })}
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(), { method: 'POST', headers: { 'Content-Type': 'application/json', 'x-access-key': env.PRIVATE_ACCESS_KEY, }, body: JSON.stringify({ to: email, subject: 'How?', text: 'I love SMTP2GO.', }), })}
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(), { method: 'POST', headers: { 'Content-Type': 'application/json', 'x-access-key': env.PRIVATE_ACCESS_KEY, }, body: JSON.stringify({ to: email, subject: 'How?', text: 'I love SMTP2GO.', }), })}
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(), { method: 'POST', headers: { 'Content-Type': 'application/json', 'x-access-key': env.PRIVATE_ACCESS_KEY, }, body: JSON.stringify({ to: email, subject: 'How?', text: 'I love SMTP2GO.', }), })}
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:
<script> fetch('/api/email/smtp2go/trigger', { method: 'POST', headers: { 'Content-Type': 'application/json', 'x-access-key': 'Insert that private access token safely?', }, body: JSON.stringify({ to: email, subject: 'How?', text: 'I love SMTP2GO.', }), })</script>
<script lang="ts"> onMount(() => { fetch('/api/email/smtp2go', { method: 'POST', headers: { 'Content-Type': 'application/json', 'x-access-key': 'Insert that private access token safely?', }, body: JSON.stringify({ to: email, subject: 'How?', text: 'I love SMTP2GO.', }), }) })</script>
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', auth: { 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({ text: context.text, 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', auth: { user: env.SMTP2GO_USERNAME, pass: env.SMTP2GO_PASSWORD, }, port: 2525, // 8025, 587 and 25 can also be used. }) await smtpTransport.sendMail({ text: context.text, 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', auth: { user: env.SMTP2GO_USERNAME, pass: env.SMTP2GO_PASSWORD, }, port: 2525, // 8025, 587 and 25 can also be used. }) await smtpTransport.sendMail({ text: context.text, subject: context.subject, from: context['verified_sender'] ?? 'contact@launchfa.st', to: typeof context.to === 'string' ? [context.to] : context.to, })}