From c46c32197889b9ff7347d596e00931e0bd80ce25 Mon Sep 17 00:00:00 2001 From: Lee Munroe Date: Mon, 10 Feb 2014 13:32:38 -0800 Subject: [PATCH] Add Nodemailer and Mailgun option for contact form --- README.md | 9 ++++++++- controllers/contact.js | 22 +++++++++++++++++----- package.json | 2 +- views/contact.jade | 3 +-- 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index f7aa3f04a2..5d9b239ae2 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ Features - Rails 3.1-style asset pipeline (See FAQ) - LESS stylesheets (auto-compiled via Express middleware) - Bootstrap 3 + Flat UI + iOS7 Theme -- Contact Form (powered by Sendgrid) +- Contact Form (powered by Mailgun or Sendgrid) - **Account Management** - Gravatar - Profile Details @@ -203,6 +203,13 @@ Obtaining API Keys - Enter your *Domain Name*, then and click **Register** - Copy and paste *Key* into `config.secrets.js` +
+ + +- Go to http://www.mailgun.com +- Sign up and add your *Domain Name* +- From the domain overview, copy and paste the default SMTP *Login* and *Password* into `config.secrets.js` + Project Structure ----------------- diff --git a/controllers/contact.js b/controllers/contact.js index 8ec66877ae..9e6a94f066 100644 --- a/controllers/contact.js +++ b/controllers/contact.js @@ -1,5 +1,17 @@ var secrets = require('../config/secrets'); -var sendgrid = require('sendgrid')(secrets.sendgrid.user, secrets.sendgrid.password); +var nodemailer = require("nodemailer"); +var smtpTransport = nodemailer.createTransport("SMTP", { + service: "Mailgun", + auth: { + user: secrets.mailgun.login, + pass: secrets.mailgun.password + } + // service: "Sendgrid", + // auth: { + // user: secrets.sendgrid.user, + // pass: secrets.sendgrid.password + // } +}); /** * GET /contact @@ -14,7 +26,7 @@ exports.getContact = function(req, res) { /** * POST /contact - * Send a contact form via SendGrid. + * Send a contact form via Nodemailer. * @param email * @param name * @param message @@ -38,14 +50,14 @@ exports.postContact = function(req, res) { var to = 'you@email.com'; var subject = 'API Example | Contact Form'; - var email = new sendgrid.Email({ + var mailOptions = { to: to, from: from, subject: subject, text: body + '\n\n' + name - }); + }; - sendgrid.send(email, function(err) { + smtpTransport.sendMail(mailOptions, function(err) { if (err) { req.flash('errors', { msg: err.message }); return res.redirect('/contact'); diff --git a/package.json b/package.json index b58bad93f9..27ebbd4fba 100755 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "less": "~1.6.2", "mongoose": "~3.8.5", "node-foursquare": "~0.2.0", + "nodemailer": "~0.6.0", "passport": "~0.2.0", "passport-facebook": "~1.0.2", "passport-github": "~0.1.5", @@ -27,7 +28,6 @@ "passport-oauth": "~1.0.0", "passport-twitter": "~1.0.2", "request": "~2.33.0", - "sendgrid": "~0.4.6", "tumblr.js": "~0.0.4", "twit": "~1.1.12", "underscore": "~1.5.2", diff --git a/views/contact.jade b/views/contact.jade index f6b4e7105e..12f840d7a5 100644 --- a/views/contact.jade +++ b/views/contact.jade @@ -22,5 +22,4 @@ block content .col-sm-offset-2.col-sm-8 button.btn.btn-default(type='submit') i.fa.fa-mail-forward - | Send - img.pull-right(height='34', src='/img/sendgrid.png') + | Send \ No newline at end of file