nodemailer and sendgrid integration

This commit is contained in:
Timur Ercan
2023-01-26 16:20:48 +01:00
parent cb665c49d4
commit 58fb62b94b
6 changed files with 54 additions and 3 deletions

View File

@ -16,7 +16,6 @@
"@tailwindcss/forms": "^0.5.3",
"@types/bcryptjs": "^2.4.2",
"@types/filesystem": "^0.0.32",
"@types/node": "18.11.9",
"@types/react-dom": "18.0.9",
"avatar-from-initials": "^1.0.3",
"bcryptjs": "^2.4.3",
@ -29,6 +28,10 @@
"next": "13.0.3",
"next-auth": "^4.18.3",
"next-transpile-modules": "^10.0.0",
"node-forge": "^1.3.1",
"node-signpdf": "^1.5.0",
"nodemailer": "^6.9.0",
"nodemailer-sendgrid": "^1.0.3",
"npm": "^9.1.3",
"placeholder-loading": "^0.6.0",
"react": "18.2.0",
@ -40,6 +43,9 @@
},
"devDependencies": {
"@types/formidable": "^2.0.5",
"@types/node": "^18.11.18",
"@types/nodemailer": "^6.4.7",
"@types/nodemailer-sendgrid": "^1.0.0",
"@types/react-pdf": "^6.2.0",
"autoprefixer": "^10.4.13",
"postcss": "^8.4.19",

View File

@ -0,0 +1,2 @@
export { sendSigningRequestMail } from "./sendSigningRequestMail";
export { sendSignedMail } from "./sendSignedMail";

View File

@ -0,0 +1,24 @@
import nodemailer from "nodemailer";
import nodemailerSendgrid from "nodemailer-sendgrid";
export const sendMail = async (
to: string,
subject: string,
htmlFormattedMessage: string
) => {
if (!process.env.SENDGRID_API_KEY)
throw new Error("Sendgrid API Key not set.");
const transport = nodemailer.createTransport(
nodemailerSendgrid({
apiKey: process.env.SENDGRID_API_KEY || "",
})
);
await transport.sendMail({
from: process.env.SENDGRID_API_KEY,
to: to,
subject: subject,
html: htmlFormattedMessage,
});
};

View File

@ -0,0 +1,12 @@
import { sendMail } from "./sendMail";
import { NEXT_PUBLIC_WEBAPP_URL } from "@documenso/lib/constants";
export const sendSignedMail = async (document: any, recipient: any) => {
// todo check if recipient has an account
sendMail(
document.user.email,
`${recipient.email} signed ${document.title}`,
`Hi ${document.user.name}, ${recipient.email} has signed your document ${document.title}. Click <a href="${NEXT_PUBLIC_WEBAPP_URL}/document/${document.id}"> VIEW DOCUMENT</a> to view it now.`
);
};

View File

@ -0,0 +1,9 @@
import { sendMail } from "./sendMail";
export const sendSigningRequestMail = async (recipient: any, document: any) => {
sendMail(
recipient.email,
`Please sign ${document.title}`,
`${document.user.name} has sent you a document to sign. Click <b><a href="https">SIGN DOCUMENT</a></b> to sign it now.`
);
};

View File

@ -1,2 +0,0 @@
// nodemailer
// sendgrid