Skip to content

Instantly share code, notes, and snippets.

@feliphebueno
Created July 10, 2015 15:48
Show Gist options
  • Save feliphebueno/ace41f9ab1c22e722c68 to your computer and use it in GitHub Desktop.
Save feliphebueno/ace41f9ab1c22e722c68 to your computer and use it in GitHub Desktop.
Simple mail sender node js api, based on http post request.
/**
*
* main.js
* simple mail sender nodejs api
* requires express, body-parser, nodemailer
*/
var server = httpServer();
server.listen(8085);
console.log("Nodejs Server started and listening for client requests on port 8085");
console.log("Server time: "+ (new Date()));
console.log("\n----------------\n");
function httpServer(){
var bodyParser = require("body-parser");
var app = require('express')();
app.use(bodyParser.urlencoded({ extended: false }));
var http = require('http').Server(app);
app.post('/mail', function(req, res){
res.header("p3p", '"CP="CAO PSA OUR"');
res.header("Access-Control-Allow-Origin", "http://your-domain.com");
var requestData = req.body;
if (verifyRequest(requestData)) {
sendMail(requestData, res);
} else {
res.send({'sucess': false, response: "Wrong paramters sent."});
console.log(req);
}
});
return http;
}
var nodemailer = require("nodemailer");
function sendMail(data, res){
var transporter = nodemailer.createTransport({
service: "Gmail",
auth: {
user: "user@gmail.com",
pass: "pass"
},
tls: {
rejectUnauthorized: false // allow invalid certificates
}
});
var mailOptions = {
from: "User <user@gmail.com>", // sender address
to: "DEST <dest@gmail.com>", // comma separated list of receivers
subject: "Subject", // Subject
html: getEmailMessage(data) // html body
//text : "Message." //plain text body
};
transporter.sendMail(mailOptions, function(error, info){
if(error){
res.send({'success': false, response: error.response +"<br />"});
console.log(error);
} else {
res.send({'success': true, response: "Your message has been succesfully sent!"});
console.log("Message sent!");
}
res.end();
});
}
function getEmailMessage(data) {
return 'New message from:'
+'<br />'
+'<br />'
+'Name: '+ data.name
+'<br />'
+'<br />'
+'Email: '+ data.email
+'<br />'
+'<br />'
+'Message: <br />'+ data.message
+'<br />'
+'<br />'
+'<hr />';
}
function verifyRequest(data){
if (data.name.length > 3 && data.email.length > 3 && data.message.length > 3) {local
return true;
} else {
return false;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment