Nodemailer с экспресс-приложением не будет отправлять электронную почту при нажатии кнопки

Используя настройку по умолчанию из Nodemailer, электронная почта будет отправляться на наш внутренний почтовый сервер, когда приложение запускается со всем кодом, включенным на странице app.js.

//app.js
var nodemailer = require('nodemailer');
var transporter = nodemailer.createTransport({
  host: 'mail.oursite.com',
});
var mailOptions = {
  from: '[email protected]', // sender address
  to: '[email protected]', // list of receivers
  subject: 'Hello ✔', // Subject line
  text: 'Hello world ✔', // plaintext body
  html: '<b>Hello world ✔</b>' // html body
};
// send mail with defined transport object
transporter.sendMail(mailOptions, function(error, info) {
  if (error) {
    return console.log(error);
  }
  console.log('Message sent: ' + info.response);
});

Затем при переключении вещей он ломается, и ничего не происходит при попытке сделать это нажатием кнопки.

App.js:

var nodemailer = require('nodemailer');
app.get('/users', routes.users);

Users.js

var express = require('express');
var router = express.Router();
var nodemailer = require('nodemailer');

/*
 * POST to addcoupon Request.
 */
router.post('/addcoupon', function(req, res) {
  // create reusable transporter object using SMTP transport
  var transporter = nodemailer.createTransport({
    host: 'mail.primeshine.com',
  });
});
module.exports = router;

Index.js

var express = require('express');
var router = express.Router();
var nodemailer = require('nodemailer');

/*
 * POST to addcoupon Request.
 */
router.post('/addcoupon', function(req, res) {
  // create reusable transporter object using SMTP transport
  var transporter = nodemailer.createTransport({
    host: 'mail.primeshine.com',
  });
});
module.exports = router;

Global.js

// Add Coupon Request
function addCoupon(event) {
  event.preventDefault();

  var mailOptions = {
    from: '[email protected]', // sender address
    to: '[email protected]', // list of receivers
    subject: 'Hello ✔', // Subject line
    text: 'Hello world ✔', // plaintext body
    html: '<b>Hello world ✔</b>' // html body
  };

  // send mail with defined transport object
  transporter.sendMail(mailOptions, function(error, info) {
    if (error) {
      return console.log(error);
    }
    console.log('Message sent: ' + info.response);
  });
};

Я пытался использовать только соответствующий код для отправки. Он отлично работает, отправляя информацию в MongoDB для кнопки, когда добавляет информацию о пользователе, но ничего не отправляет, когда я пытаюсь отправить электронное письмо. Не уверен, что у меня что-то не так или что-то еще не так... Заранее спасибо за любую помощь!


person tharco    schedule 31.05.2015    source источник
comment
Используете ли вы Nodemailer на клиентском javascript (Global.js)? Это предназначено только для серверной части   -  person laggingreflex    schedule 31.05.2015
comment
Спасибо, новичок в этом, и это имеет массу смысла. Пришлось реализовать по другому, спасибо   -  person tharco    schedule 01.06.2015


Ответы (1)


Когда я использовал nodemailer для отправки писем со своей учетной записи электронной почты, мне пришлось создать транспорт с аутентификацией:

/* define transportation */
var transport = nodemailer.createTransport(smtpTransport({
    host: 'posteo.de',
    port: 465,
    secure: true,
    auth: {
        user: 'username',
        pass: 'password'
    },
    maxConnections: 5,
    maxMessages: 10
}));

Не уверен, что это необходимо в вашем случае, но, возможно, это поможет.

person arne.z    schedule 31.05.2015
comment
Нет, без аутентификации работает нормально. Проблема заключалась в том, что я пытался запустить код. Но спасибо за комментарий! - person tharco; 01.06.2015