email-lambda/src/sendEmail.ts (46 lines of code) (raw):

import { STAGE, standardAwsConfig } from "shared/awsIntegration"; import { SendEmailCommand, SESClient } from "@aws-sdk/client-ses"; import { getBasicMessage, buildEmailHTML, EmailData } from "./email"; const emailer = new SESClient(standardAwsConfig); export const sendEmail = async ({ email, emailData, isIndividualMentionEmail, ref, }: { email: string; emailData: EmailData; isIndividualMentionEmail: boolean; ref: number; }) => { console.log( `Sending email to ${email} about ${ isIndividualMentionEmail ? "an individual" : "a group" } mention.` ); const emailHTML = buildEmailHTML(emailData, !!ref); const subject = `📌 ${ isIndividualMentionEmail ? "You've" : "Your team has" } just been mentioned in Pinboard (ref:${ref})`; return emailer.send( new SendEmailCommand({ Source: STAGE === "PROD" ? "pinboard <mentions@pinboard.gutools.co.uk>" : "pinboard CODE <mentions@pinboard.code.dev-gutools.co.uk>", Destination: { ToAddresses: [email], }, ReplyToAddresses: ["pinboard@guardian.co.uk"], Message: { Subject: { Data: subject, }, Body: { Text: { Data: getBasicMessage(!!ref) }, Html: { Data: emailHTML }, }, }, }) ); };