In this part, we are going to focus on integrating our application with Twilio. In conclusion, will create a table on pricing so you can understand which product to use in your application.
Let's begin by installing all the required packages
yarn add twilio
yarn add @sendgrid/mail
Once done get your credentials from Twilio and sendgrid
You need to register an account with Twilio here https://www.twilio.com/ and generate a phone number. Get your SID and AUTH_TOKEN.
For email, you will need to register an account with SendGrid https://signup.sendgrid.com/
Then generate a SENDGRID_API_KEY.
For raw email or email with attachment, you will need to register with digioh
https://digioh.com/sendgrid
Once we have everything together let's create a .env file and add our creditials
VUE_APP_SENDGRID_API_KEY =
VUE_APP_TWILIO_ACCOUNT_SID =
VUE_APP_TWILIO_AUTH_TOKEN =
Next, add a script.js file to your application.
Script.js
/*eslint-disable*/
var accountSid = process.env.VUE_APP_TWILIO_ACCOUNT_SID; // Your Account SID from www.twilio.com/console
var authToken = process.env.VUE_APP_TWILIO_AUTH_TOKEN; // Your Auth Token from www.twilio.com/console
const client = require('twilio')(accountSid, authToken, {
lazyLoading: true
});
const sgMail = require("@sendgrid/mail");
sgMail.setApiKey(process.env.VUE_APP_SENDGRID_API_KEY);
// send bulk email
export const sendbulkemail = item => {
const msg = {
to: item.addresses,
from: "crudavid36@gmail.com",
subject: `${item.subject}`,
text: `${item.content}`,
html: `<html><body><div style="font-weight: 500; margin-bottom:10px">${item.title}<div><div>${item.content}</div></body></html>`
};
sgMail
.send(msg)
};
// send bulk raw email
// Unfortunately you cant send attachment with Sendgrid
// You will have to use https://digioh.com/sendgrid
export const sendbulkRawemail = item => {
//
};
// send bulk sms
export const sendbulksms = item => {
client.messages
.create({
body: `${item.content}`,
from: "+1#########",
to: `${item.addresses}`
})
.then(message => console.log(message.sid)).catch(Error => { console.log(Error)})
};
// ============================
// sort email addresses
export const sortsenderemail = item => {
// this will hold our final items
let array = [];
// get the email and phone numbers and sort them
const response = item.split(",");
// loop through the response and check the validity of each email
response.forEach(e => {
let item = checkvalidityofemail(e);
if (item === true) {
// if email is valid send to array
array.push(e.trim());
}
});
// end
// return array
return array;
};
// sort phone numbers
export const sortsenderphone = item => {
// this will hold our final items
let array = [];
// get the email and phone numbers and sort them
const response = item.split(",");
// loop through the response and check the validity of each email
response.forEach(e => {
let item = checkvalidityofphone(e);
if (item === true) {
// if email is valid send to array
array.push(e.trim());
}
});
// end
// return array
return array;
};
// This function checks the format of an email
// Those that wont pass will be eliminated
const checkvalidityofemail = item => {
// eslint-disable-next-line no-useless-escape
let pattern = /(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))/;
return pattern.test(item);
};
// This function checks the format of a phone number
// Those that wont pass will be elimited
const checkvalidityofphone = item => {
// eslint-disable-next-line prettier/prettier
let pattern = /^\+[1-9]\d{1,14}$/g;
return pattern.test(item);
};
// ==================================
This will be a complete guide on how to build and integrate a bulk email application using Twilio and SendGrid.
Conclusion
Let's conclude by comparing a few things
This is my opinion and anyone can suggest otherwise. AWS SES leads in this and would be great to be incorporated in a bulk application. AWS SNS wins in the pricing battle and would be ideal for SMS notifications.
*Pricing is for Airtel in Kenya they charge less for AWS SMS than from Twilio.
Product | Pricing |
---|---|
AWS SES | 0.0001 per email |
sendGrid | 0.00015 per email |
SMS
Product | Pricing |
---|---|
AWS SNS | 0.05126 per message |
Twilio | 0.0645 per message |
I hope this was helpful to anyone currently building a bulk email and SMS application. Thanks for reading this will share a tutorial video in the coming days.
Top comments (0)