Send transactional emails using any of the popular email providers: Sendgrid, Brevo with a single wrapper
pnpm install @calculusky/transactional-email
#or
npm install @calculusky/transactional-email
#or
yarn add @calculusky/transactional-email
First, obtain your API key from the dashboard for any of the service provider you would want to use.
CommonJS Usage
Note: In order to gain the TypeScript typings (for intellisense / autocomplete) while using CommonJS, use require().default as seen below:
const TransactionalEmail = require("@calculusky/transactional-email").default;
const email = new TransactionalEmail({
apiKey: "YOUR API KEY",
from: { email: "info@example.com", name: "John Doe" }, // optional (default value for the sender). You can set or overwrite it in the send() method options
});
//sendgrid message options
const message = {
from: "info@example.com", // Use the email address or domain you verified
subject: "Sending with Sendgrid Provider",
text: "This is just a test mail",
html: "<strong>This is just a test mail</strong>",
personalization: [{ to: { email: "johndoe@gmail.com" } }],
};
//ES6
email.send({ provider: "sendgrid", emailOptions: message }).then(
() => {},
(error) => {
console.error(error);
if (error.response) {
console.error(error.response.data);
}
}
);
//ES8
(async () => {
try {
await email.send(message);
} catch (error) {
console.error(error);
if (error.response) {
console.error(error.response.data);
}
}
})();
TypeScript Usage
import TransactionalEmail, {
Brevo,
Sendgrid,
} from "@calculusky/transactional-email";
const email = new TransactionalEmail({
provider: "YOUR PROVIDER" //values: brevo or sendgrid
apiKey: "YOUR PROVIDER API KEY",
from: { email: "info@example.com", name: "John Doe" }, // optional (default value for the sender). You can set or overwrite it in the send() method options
});
//sendgrid message options
const message: Sendgrid.SendgridOptions = {
from: "info@example.com", // Use the email address or domain you verified
subject: "Sending with Sendgrid Provider",
text: "This is just a test mail",
html: "<strong>This is just a test mail</strong>",
personalization: [{ to: { email: "johndoe@gmail.com" } }],
};
//Brevo message options
const message: Brevo.BrevoOptions = {
sender: { email: "info@example.com", name: "John Doe" },
to: [{ email: "receiver@example2.com", name: "John Smith" }],
subject: "Sending with Brevo Provider",
textContent: "This is just a test mail",
htmlContent: "<strong>This is just a test mail</strong>",
};
//ES6
email.send(message).then(
() => {},
(error) => {
console.error(error);
if (error.response) {
console.error(error.response.data);
}
}
);
//ES8
(async () => {
try {
await email.send(message);
} catch (error) {
console.error(error);
if (error.response) {
console.error(error.response.data);
}
}
})();
Note: Message options vary for different providers. Please checkout the option interface for each provider. For more details, you can visit their official platforms for transactional message options. Below are the links: