Some of our articles:
- Building a Scalable Notification System with gRPC and Microservices
- How to Send Email Notifications using Python? (With Code Examples)
- A Complete Guide on Notification Infrastructure for Modern Applications in 2023
Method 1: Using the Nodemailer Module
1.1 Installation and Setup
npm install nodemailer --save
Create emailSender.js
:
const nodemailer = require('nodemailer');
// Setup Nodemailer transporter
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'your-email@gmail.com',
pass: 'your-email-password'
}
});
// ... rest of the code
1.2 Creating a Nodemailer Transporter
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'your-email@gmail.com',
pass: 'your-email-password'
}
});
1.3 Setting Message Options
const mailOptions = {
to: 'test@example.com',
from: 'your-email@gmail.com',
subject: 'Subject',
text: 'Body'
};
1.4 Sending Emails with Attachments
const mailOptionsWithAttachment = {
// ... other options
attachments: [
{
filename: 'file.txt',
path: '/path/to/file.txt'
}
]
};
1.5 HTML Emails with Dynamic Content
Install email-templates and pug:
npm install email-templates pug --save
Update emailSender.js
as per your template.
1.6 Now, create your email templates.
Let's focus on a common scenario: sending a welcome email for new user registration.
Create subject.pug
:
= `Hi #{firstName} #{lastName}, welcome to My App!`
Create html.pug
:
h1 Hello #{firstName} #{lastName}
p.
Welcome to My App! Now your test emails will be safe.
We just need to make sure your account is real.
a(href='https://example.com/confirmation') Confirm!
Ensure your directory structure looks like this:
├── app.js
├── emails
│ └── welcome
│ ├── html.pug
│ └── subject.pug
1.7 Sending Emails with Dynamic Content
Now, let's modify our Node.js application to use these templates:
// ... (previous code)
// Step 5: Create an email-templates instance
const Email = require('email-templates');
const email = new Email({
message: {
from: 'hi@example.com',
},
send: true,
transport: {
host: 'smtp.mailtrap.io',
port: 2525,
ssl: false,
tls: true,
auth: {
user: 'your-mailtrap-username',
pass: 'your-mailtrap-password',
},
},
});
// Step 6: Define user data
const people = [
{ firstName: 'Diana', lastName: 'One', email: 'diana@example.com' },
{ firstName: 'Alex', lastName: 'Another', email: 'alex@example.com' },
];
// Step 7: Send emails for each user
people.forEach((person) => {
email
.send({
template: 'welcome',
message: {
to: person.email,
},
locals: person,
})
.then(console.log)
.catch(console.error);
});
Replace placeholder values in the code with your actual credentials.
Method 2: Sending Emails with Gmail SMTP
2.1 Gmail SMTP Configuration
npm install nodemailer --save
Create gmailSender.js
:
const nodemailer = require('nodemailer');
const transporter = nodemailer.createTransport({
service: 'gmail',
auth: {
user: 'your-email@gmail.com',
pass: 'your-email-password'
}
});
// ... rest of the code
2.2 App Password for Enhanced Security
Follow the steps for generating an App Password.
2.3 Sending an Email with Gmail SMTP
Update gmailSender.js
:
const mailOptions = {
to: 'test@example.com',
from: 'your-email@gmail.com',
subject: 'Subject',
text: 'Body'
};
2.4 Advanced Usage: oAuth2 Authentication
Include oAuth2 authentication in gmailSender.js
:
// oAuth2 authentication
const oauth2Client = new OAuth2(
'YOUR_CLIENT_ID',
'YOUR_CLIENT_SECRET',
'YOUR_REDIRECT_URL'
);
// ... rest of the code
Method 3: Sending Emails using a Transactional Email API (e.g., Postmark)
Step 1: Sign Up for Postmark and Create API Token
- Sign up for Postmark.
- Create an API token in your Postmark account.
Step 2: Install the Postmark JavaScript Client
npm install --save postmark
Step 3: Create postmark.js
Create a file named postmark.js
:
const postmark = require('postmark');
const client = new postmark.ServerClient('YOUR_POSTMARK_API_TOKEN');
const message = {
From: 'your-email@example.com',
To: 'recipient@example.com',
Subject: 'Subject of the Email',
TextBody: 'Text content of the email',
HtmlBody: '<strong>HTML content of the email</strong>',
};
client
.sendEmail(message)
.then((response) => {
console.log('Email sent\n', response);
})
.catch((error) => {
console.error(error);
});
Step 4: Update postmark.js
Replace 'YOUR_POSTMARK_API_TOKEN'
with the API token you obtained from your Postmark account.
Method 4: Using SuprSend - Third-Party Multichannel Notification Infrastructure with Node SDK
Step I: Log in to the SuprSend Account
Visit the SuprSend login page and enter your Email Address and Password. Try SuprSend for free.
Step II: Integrate with Email(s)
Install SuprSend using npm or yarn.
Step III: Create & Load Template
Create templates using the drag & drop editor.
Step IV: Create Smart Flow (Routing)
Define rules and logic for notification flows.
Step V: Trigger a Notification Event via API
Integrate the SuprSend API into your Node application.
npm install @suprsend/node-sdk
# to upgrade to latest SDK version
npm install @suprsend/node-sdk@latest
Installation
const {Suprsend} = require("@suprsend/node-sdk");
// Initialize SDK
const supr_client = new Suprsend("WORKSPACE KEY", "WORKSPACE SECRET");
Step VI: Check Event Analytics And Logs
View granular channel-wise and vendor-wise analytics through the unified dashboard. Explore more about logs.
You may want to check out other SuprSend SDKs too. Consider giving us a star after usage. It's free and open.
suprsend / suprsend-go
SuprSend SDK for go
suprsend-go
SuprSend Go SDK
Installation
go get github.com/suprsend/suprsend-go
Usage
Initialize the SuprSend SDK
import (
"log"
suprsend "github.com/suprsend/suprsend-go"
)
func main() {
opts := []suprsend.ClientOption{
// suprsend.WithDebug(true),
}
suprClient, err := suprsend.NewClient("__api_key__", "__api_secret__", opts...)
if err != nil {
log.Println(err)
}
}
Trigger Workflow
package main
import (
"log"
suprsend "github.com/suprsend/suprsend-go"
)
func main() {
// Instantiate Client
suprClient, err := suprsend.NewClient("__api_key__", "__api_secret__")
if err != nil {
log.Println(err)
return
}
// Create workflow body
wfBody := map[string]interface{}{
"name": "Workflow Name",
"template": "template slug",
"notification_category": "category",
// "delay": "15m", // Chek duration format in documentation
"users": []map[string]interface{}{
{
"distinct_id": "0f988f74-6982-41c5-8752-facb6911fb08",
…suprsend / suprsend-py-sdk
SuprSend SDK for python3
suprsend-py-sdk
This package can be included in a python3 project to easily integrate
with SuprSend
platform.
We're working towards creating SDK in other languages as well.
SuprSend SDKs available in following languages
- python3 >= 3.7 (
suprsend-py-sdk
) - node (
suprsend-node-sdk
) - java (
suprsend-java-sdk
)
Installation
suprsend-py-sdk
is available on PyPI. You can install using pip.
pip install suprsend-py-sdk
This SDK depends on a system package called libmagic
. You can install it as follows:
# On debian based systems
sudo apt install libmagic
# If you are using macOS
brew install libmagic
Usage
Initialize the SuprSend SDK
from suprsend import Suprsend
# Initialize SDK
supr_client = Suprsend("workspace_key", "workspace_secret")
Following example shows a sample request for triggering a workflow
It triggers a notification to a user with id: distinct_id
,
email: user@example.com
& androidpush(fcm-token): __android_push_fcm_token__
using template purchase-made
and notification_category system
from suprsend import Workflow
…suprsend / suprsend-node-sdk
SuprSend SDK for Node.js
suprsend-node-sdk
This package can be included in a node project to easily integrate with Suprsend
platform.
Refer full documentation here
Installation
suprsend-node-sdk
is available as npm package. You can install using npm or yarn.
npm install @suprsend/node-sdk
Initialization
Initialize the Suprsend SDK
const {Suprsend} = require("@suprsend/node-sdk");
// Initialize SDK
const supr_client = new Suprsend("workspace_key", "workspace_secret");
License
suprsend / suprsend-react-inbox
SuprSend SDK for integrating inbox functionality in React applications
@suprsend/react-inbox
SuprSend SDK for integrating Inbox, and Toast notifications in React applications
Installation
npm install --save @suprsend/react-inbox
Integration
import SuprSendInbox from '@suprsend/react-inbox'
function Example() {
return (
<SuprsendInbox
workspaceKey='<workspace_key>'
workspaceSecret='<workspace_secret>'
subscriberId='<subscriber_id>'
distinctId='<distinct_id>'
/>
)
}
Top comments (2)
Thanks, this has answered one of my next question in the coding path.
Good luck with coding.