Need help?
@@ -49,4 +34,4 @@ export const transactionEmailTemplate = (
return html + footer;
};
-export default transactionEmailTemplate;
+export default baseEmailTemplate;
diff --git a/packages/lib/mail/index.ts b/packages/lib/mail/index.ts
index 2576b5404..6d49cdb6b 100644
--- a/packages/lib/mail/index.ts
+++ b/packages/lib/mail/index.ts
@@ -1,3 +1,4 @@
+export { signingRequestTemplate } from "./signingRequestTemplate";
+export { signingCompleteTemplate } from "./signingCompleteTemplate";
export { sendSigningRequest as sendSigningRequest } from "./sendSigningRequest";
export { sendSigningDoneMail } from "./sendSigningDoneMail";
-export { transactionEmailTemplate } from "./transactionEmailTemplate";
diff --git a/packages/lib/mail/sendMail.ts b/packages/lib/mail/sendMail.ts
index 7c32d1a45..a32dba66b 100644
--- a/packages/lib/mail/sendMail.ts
+++ b/packages/lib/mail/sendMail.ts
@@ -1,7 +1,16 @@
+import { ReadStream } from "fs";
import nodemailer from "nodemailer";
import nodemailerSendgrid from "nodemailer-sendgrid";
-export const sendMail = async (to: string, subject: string, body: string) => {
+export const sendMail = async (
+ to: string,
+ subject: string,
+ body: string,
+ attachments: {
+ filename: string;
+ content: string | Buffer;
+ }[] = []
+) => {
if (!process.env.SENDGRID_API_KEY)
throw new Error("Sendgrid API Key not set.");
@@ -16,6 +25,7 @@ export const sendMail = async (to: string, subject: string, body: string) => {
to: to,
subject: subject,
html: body,
+ attachments: attachments,
})
.catch((err) => {
throw err;
diff --git a/packages/lib/mail/sendSigningDoneMail.ts b/packages/lib/mail/sendSigningDoneMail.ts
index 621e9fc7b..d43d84d7a 100644
--- a/packages/lib/mail/sendSigningDoneMail.ts
+++ b/packages/lib/mail/sendSigningDoneMail.ts
@@ -1,23 +1,22 @@
import { sendMail } from "./sendMail";
import { NEXT_PUBLIC_WEBAPP_URL } from "@documenso/lib/constants";
-import { transactionEmailTemplate } from "@documenso/lib/mail";
+import { signingCompleteTemplate } from "@documenso/lib/mail";
export const sendSigningDoneMail = async (
recipient: any,
document: any,
user: any
) => {
- // todo check if recipient has an account
await sendMail(
user.email,
`Completed: "${document.title}"`,
- transactionEmailTemplate(
- `All recipients have signed "${document.title}"`,
- document,
- recipient,
- `${NEXT_PUBLIC_WEBAPP_URL}/api/documents/${document.id}`,
- `Download "${document.title}"`,
- user
- )
+ // base template with footer and box vs content template for eact type
+ signingCompleteTemplate(`All recipients have signed "${document.title}".`),
+ [
+ {
+ filename: document.title,
+ content: Buffer.from(document.document.toString(), "base64"),
+ },
+ ]
);
};
diff --git a/packages/lib/mail/sendSigningRequest.ts b/packages/lib/mail/sendSigningRequest.ts
index b1ddc218c..ec91f5fce 100644
--- a/packages/lib/mail/sendSigningRequest.ts
+++ b/packages/lib/mail/sendSigningRequest.ts
@@ -2,7 +2,7 @@ import prisma from "@documenso/prisma";
import { sendMail } from "./sendMail";
import { SendStatus, DocumentStatus } from "@prisma/client";
import { NEXT_PUBLIC_WEBAPP_URL } from "../constants";
-import { transactionEmailTemplate } from "@documenso/lib/mail";
+import { signingRequestTemplate } from "@documenso/lib/mail";
export const sendSigningRequest = async (
recipient: any,
@@ -12,7 +12,7 @@ export const sendSigningRequest = async (
await sendMail(
user.email,
`Please sign ${document.title}`,
- transactionEmailTemplate(
+ signingRequestTemplate(
`${user.name} (${user.email}) has sent you a document to sign. `,
document,
recipient,
diff --git a/packages/lib/mail/signingCompleteTemplate.ts b/packages/lib/mail/signingCompleteTemplate.ts
new file mode 100644
index 000000000..5d24b1765
--- /dev/null
+++ b/packages/lib/mail/signingCompleteTemplate.ts
@@ -0,0 +1,25 @@
+import { NEXT_PUBLIC_WEBAPP_URL } from "../constants";
+import { Document as PrismaDocument } from "@prisma/client";
+import { baseEmailTemplate } from "./baseTemplate";
+
+export const signingCompleteTemplate = (message: string) => {
+ const customContent = `
+
+

+
+
+
+ A copy of the signed document has been attached to this email.
+
`;
+
+ const html = baseEmailTemplate(message, customContent);
+
+ return html;
+};
+
+export default signingCompleteTemplate;
diff --git a/packages/lib/mail/signingRequestTemplate.ts b/packages/lib/mail/signingRequestTemplate.ts
new file mode 100644
index 000000000..769b2597e
--- /dev/null
+++ b/packages/lib/mail/signingRequestTemplate.ts
@@ -0,0 +1,29 @@
+import { NEXT_PUBLIC_WEBAPP_URL } from "../constants";
+import { Document as PrismaDocument } from "@prisma/client";
+import { baseEmailTemplate } from "./baseTemplate";
+
+export const signingRequestTemplate = (
+ message: string,
+ document: any,
+ recipient: any,
+ ctaLink: string,
+ ctaLabel: string,
+ user: any
+) => {
+ const customContent = `
+
+
+ ${ctaLabel}
+
+
+
+ Click the button to view "${document.title}".
+
If you have questions about this document, you should ask ${user.name}.
+
`;
+
+ const html = baseEmailTemplate(message, customContent);
+
+ return html;
+};
+
+export default signingRequestTemplate;