diff --git a/apps/web/pages/api/documents/[id]/send.ts b/apps/web/pages/api/documents/[id]/send.ts index 42d22a5df..3b84e15b9 100644 --- a/apps/web/pages/api/documents/[id]/send.ts +++ b/apps/web/pages/api/documents/[id]/send.ts @@ -42,17 +42,20 @@ async function postHandler(req: NextApiRequest, res: NextApiResponse) { const recipients = prisma.recipient.findMany({ where: { documentId: +documentId, - sendStatus: SendStatus.NOT_SENT, // TODO REDO AFTER DEBUG + // sendStatus: SendStatus.NOT_SENT, // TODO REDO AFTER DEBUG }, }); + (await recipients).forEach(async (recipient) => { + await sendSigningRequest(recipient, document) + .then(() => { + res.status(200).end(); + }) + .catch((err) => { + return res.status(502).end("Coud not send request for signing."); + }); + }); // todo check if recipient has an account and show them in their inbox or something - (await recipients).forEach(async (recipient) => { - await sendSigningRequest(recipient, document); - }); - - // todo way better error handling - return res.status(200).end(); } export default defaultHandler({ diff --git a/packages/lib/mail/index.ts b/packages/lib/mail/index.ts index 0fe0d7963..5693dfb53 100644 --- a/packages/lib/mail/index.ts +++ b/packages/lib/mail/index.ts @@ -1,2 +1,3 @@ export { sendSigningRequest as sendSigningRequest } from "./sendSigningRequest"; export { sendSignedMail } from "./sendSignedMail"; +export { transactionEmailTemplate } from "./transactionEmailTemplate" \ No newline at end of file diff --git a/packages/lib/mail/sendMail.ts b/packages/lib/mail/sendMail.ts index b7d27f2c2..7c32d1a45 100644 --- a/packages/lib/mail/sendMail.ts +++ b/packages/lib/mail/sendMail.ts @@ -1,24 +1,23 @@ import nodemailer from "nodemailer"; import nodemailerSendgrid from "nodemailer-sendgrid"; -export const sendMail = async ( - to: string, - subject: string, - htmlFormattedMessage: string -) => { +export const sendMail = async (to: string, subject: string, body: string) => { if (!process.env.SENDGRID_API_KEY) throw new Error("Sendgrid API Key not set."); - const transport = nodemailer.createTransport( + const transport = await nodemailer.createTransport( nodemailerSendgrid({ apiKey: process.env.SENDGRID_API_KEY || "", }) ); - - await transport.sendMail({ - from: process.env.MAIL_FROM, - to: to, - subject: subject, - html: htmlFormattedMessage, - }); + await transport + .sendMail({ + from: process.env.MAIL_FROM, + to: to, + subject: subject, + html: body, + }) + .catch((err) => { + throw err; + }); }; diff --git a/packages/lib/mail/sendSignedMail.ts b/packages/lib/mail/sendSignedMail.ts index 7fca9a38d..f6798e7b4 100644 --- a/packages/lib/mail/sendSignedMail.ts +++ b/packages/lib/mail/sendSignedMail.ts @@ -1,50 +1,20 @@ import { sendMail } from "./sendMail"; import { NEXT_PUBLIC_WEBAPP_URL } from "@documenso/lib/constants"; +import { transactionEmailTemplate } from "@documenso/lib/mail"; export const sendSignedMail = async (recipient: any, document: any) => { // todo check if recipient has an account await sendMail( document.User.email, `${recipient.email} signed "${document.title}"`, - ` -
- ${document.User.name || recipient.email} has signed your document ${
- document.title
- }.
-
-
- ${document.User.name} (${document.User.email}) has sent you a document to sign.
-
-
+ ${message}
+ + + ${ctaLabel} + +
+