Eu estava trabalhando em um aplicativo phonegap, mas descobri que os plug-ins que adicionam a capacidade de enviar e-mails são instáveis, não confiáveis e sem suporte. Desisti de usá-los e decidi escrever um invólucro de API para fazer o trabalho por mim, uma vez que o aplicativo em que estava trabalhando já dependia de uma conexão de internet ativa.
Você pode fazer isso MUITO facilmente no node.js.
Supondo que você já tenha instalado node.js e npm, o primeiro thin que você precisa fazer é criar um package.json:
{
"name": "my-api",
"description": "A simple API wrapper for nodemailer to send emails",
"dependencies" : {
"nodemailer": "0.4.x",
"restify": "2.6.x"
}
}
… e um arquivo de configuração:
var config = {}
config.service = 'Gmail'
config.username = '';
config.password = '';
config.sendAddr = 'noreply@myapi.com';
module.exports = config;
Em seguida, crie sua API.
// Include dependencies
var restify = require('restify');
var nodemailer = require('nodemailer');
// Include config
var config = require('./config')
// Setup email config
var smtpTransport = nodemailer.createTransport("SMTP",{
service: config.service,
auth: {
user: config.username,
pass: config.password
}
});
// Create the server and map POST payload to request parameters object
var server = restify.createServer();
server.use(restify.bodyParser({ mapParams: true }));
server.use(
function crossOrigin(req,res,next){
res.header("Access-Control-Allow-Origin", "*"); // the client could be a mobile app so we must allow POSTs from any origin
res.header("Access-Control-Allow-Headers", "X-Requested-With");
return next();
}
);
/**
* API endpoint for sending emails.
*
* @param {string} receipt The email address of the recepient
* @param {string} subject The subject title of the email to send
* @param {string} message The email message
*/
server.post('/email', function create(req, res, next) {
if (!req.params.receipt === undefined ||
req.params.subject === undefined ||
req.params.message === undefined) {
return next(new restify.InvalidArgumentError('receipt, subject, message are required parameters!'));
}
// Send an email to the visitor's welcomer with their details + signature
smtpTransport.sendMail({
from: config.sendAddr,
to: req.params.receipt,
subject: req.params.subject,
html: req.params.message
}, function(error, response){
if (error) {
console.log(error);
} else {
console.log("Message sent: " + response.message);
}
});
res.send(201, req.params);
});
// Start listening on port 8080
server.listen(8080, function() {
console.log('%s listening at %s', server.name, 'http://my-api.app');
});
Contanto que seu aplicativo possa POSTAR em sua API, você pode enviar e-mails! Você pode fazer outras coisas aqui, bem como armazenar as informações enviadas por e-mail em um banco de dados, etc.
Para obter mais informações, consulte a documentação node.js, restify e nodemailer.
Esta foi a minha primeira vez usando node.js, então obviamente o poderia ser bastante arrumado, mas isso só mostra como isso é fácil!