UNPKG

@cocalc/server

Version:

CoCalc server functionality: functions used by either the hub and the next.js server

36 lines (31 loc) 1.12 kB
/* * This file is part of CoCalc: Copyright © 2021 Sagemath, Inc. * License: AGPLv3 s.t. "Commons Clause" – see LICENSE.md for details */ /* Send email using whichever email_backend is configured in the database, or throw an exception if none is properly configured. */ import type { Message } from "./message"; import sendViaSMTP from "./smtp"; import sendViaSendgrid from "./sendgrid"; import sendEmailThrottle from "./throttle"; import { getServerSettings } from "../settings/server-settings"; export default async function sendEmail( message: Message, account_id?: string // account that we are sending this email *on behalf of*, if any (used for throttling). ): Promise<void> { await sendEmailThrottle(account_id); const { email_backend } = await getServerSettings(); switch (email_backend) { case "": case "none": throw Error(`no email backend configured`); case "smtp": return await sendViaSMTP(message); case "sendgrid": return await sendViaSendgrid(message); default: throw Error(`no valid email backend configured: ${email_backend}`); } }