Использование nodemailer с разными провайдерами электронной почты - PullRequest
0 голосов
/ 16 февраля 2019

Я использую nodemailer для отправки электронных писем из моего веб-приложения.Я уже отправляю электронные письма из одной учетной записи Gmail в другую учетную запись Gmail, используя "service: 'gmail'".

const nodemailer = require("nodemailer");
const promisify = require("es6-promisify");

const transport = nodemailer.createTransport({
  service: 'gmail',
  auth: {
    user: "my gmail",
    pass: "my password"
  }
});

exports.send = async options => {
  const mailOptions = {
    from: options.email,
    to: 'adikosh10@gmail.com',
    subject: options.subject,
    html: options.text,
    text: options.text
  };

  const sendMail = promisify(transport.sendMail, transport);
  return sendMail(mailOptions);
};

Приведенный выше код работает, но я не могу заставить его работать для учетных записей Outlook.Это означает, что он не будет работать, если я отправлю электронное письмо на учетную запись outlook или hotmail.

Более того, я не знаю, как зарегистрировать несколько служб, чтобы отправлять электронную почту на любой почтовый сервис (hotmail, outlook, gmail ..)..) и не только gmail.

Как я могу это сделать?Пожалуйста, помогите, если можете.

Спасибо, Ади

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

Это код, который я пробовал, чтобы отправить два электронных письма.Это не работает.

const nodemailer = require("nodemailer");
const promisify = require("es6-promisify");

const transport = nodemailer.createTransport({
  service: 'gmail',
  auth: {
    user: "my gmail",
    pass: "my gmail pass"
  }
});

const transport2 = nodemailer.createTransport({
  service: 'hotmail',
  auth: {
    user: "my hotmail",
    pass: "my hotmail pass"
  }
});

exports.send = async options => {
  const mailOptions = {
    to: 'my gmail',
    subject: options.subject,
    html: options.text,
    text: options.text
  };

  const mailOptions2 = {
    to: 'my hotmail',
    subject: options.subject,
    html: options.text,
    text: options.text
  };

  const sendMail = promisify(transport.sendMail, transport);
  return sendMail(mailOptions);

  const sendMail2 = promisify(transport2.sendMail2, transport2);
  return sendMail2(mailOptions2);
};
0 голосов
/ 16 февраля 2019

Здесь вы можете сделать следующее:

Сначала вы можете использовать NodeJS Nodemailer Outlook пакет npm , этим вы можете легко это сделать.

Или простопопробуйте сделать это по

Для Outlook:

var transport = nodemailer.createTransport("SMTP", {
    host: "smtp-mail.outlook.com",
    secureConnection: false, 
    port: 587, 
    auth: {
        user: "XXXXXX@outlook.com",
        pass: "XXXXXX"
    },
    tls: {
        ciphers:'SSLv3'
    }
});

Для горячей почты:

var transport = nodemailer.createTransport("SMTP", {
    service: "hotmail",
    auth: {
        user: "XXXXX@hotmail.com",
        pass: "XXXXX"
    }
});

Вместе за один раз: попробуйте что-нибудь подобное

var nodeoutlook = require('nodejs-nodemailer-outlook')
var nodemailer = require("nodemailer");
const promisify = require("es6-promisify");

nodeoutlook.sendEmail({
    auth: {
        user: "johnexample@organization.com",
        pass: "johnpassword"
    }, from: 'info@myorganization.com',
    to: 'jackexample@organization.com',
    subject: 'Hey you, awesome!',
    html: '<b>This is bold text</b>',
    text: 'This is text version!'
    attachments: [
                   {   // file on disk as an attachment
                        filename: 'text3.txt',
                        path: '/path/to/file.txt' // stream this file
                   }
                ]
});


async function main(){
  let account = await nodemailer.createTestAccount();
  let transporter = nodemailer.createTransport({
    host: "smtp.ethereal.email",
    port: 587,
    secure: false,
    auth: {
      user: account.user, 
      pass: account.pass 
    }
  });

  let mailOptions = {
    from: '"Fred " 
    to: "bar@example.com, baz@example.com", // list of receivers
    subject: "Hello",
    text: "Hello world?", // plain text body
    html: "<b>Hello world?</b>" // html body
  };
  let info = await transporter.sendMail(mailOptions)
}

main().catch(console.error)

Надеюсь, это поможет !!!спасибо

...