【问题标题】:Nodemailer without Gmail没有 Gmail 的 Nodemailer
【发布时间】:2015-09-30 22:49:09
【问题描述】:

我正在使用 NodeJS,我想使用 Nodemailer 配置我的电子邮件帐户。

我发现的所有 Nodemailer 示例都是针对 Gmail 的...

var transporter = nodemailer.createTransport({
    service: 'Gmail',
    auth: {
        user: 'gmail.user@gmail.com',
        pass: 'userpass'
    }
});

我怎样才能把另一个服务?特别是我在ovh (SSL0.OVH.NET) 购买了一个电子邮件域,我有兴趣配置这个电子邮件帐户。

我试过了,但没找到办法……

谢谢!

【问题讨论】:

标签: node.js nodemailer


【解决方案1】:

我创建了一个模块 Mail 用于通过 SMTP 发送 html 邮件

exports.send = function(email, subject, htmlcontent, callback) {
    var nodemailer = require('nodemailer');
    var smtpTransport = require('nodemailer-smtp-transport');
    var configMail = require('../bin/config').mail;//my json configurations mail

    var transporter = nodemailer.createTransport(smtpTransport({
        host: configMail.host, //mail.example.com (your server smtp)
        port: configMail.port, //2525 (specific port)
        secureConnection: configMail.secureConnection, //true or false
        auth: {
            user: configMail.auth.user, //user@mydomain.com
            pass: configMail.auth.pwd //password from specific user mail
        }
    }));

    var mailOptions = {
        from: configMail.email,
        to: email,
        subject: subject,
        html: htmlcontent
    };

    transporter.sendMail(mailOptions, function(err, info){
        transporter.close();
        if(err) {
            callback(err, info);
        }
        else {
            callback(null, info);
        }
    });
}

用法:

var Mail = require('../utils/Mail'); //require this module
Mail.send('[EMAIL TO SEND]', '[TITLE]', '[YOUR HTML TEMPLATE MAIL]', function(err, info) {
    if(err) {
        //error
    }
    else {
        //Email has been sent and you can see all information in var info
    }
});

【讨论】:

  • 此代码适用于哪个版本的 Nodemailer?当前版本文档定义了不同的签名nodemailer.com/smtp
  • 使用版本包 nodemailer ^1.8.0 和 nodemailer-smtp-transport ^1.0.3 测试
【解决方案2】:

在域中创建电子邮件 ID(主要通过 c 面板)时,检查该邮件地址的邮件配置并查找 SMTP 详细信息,例如端口、用户名等。然后在 nodemailer 传输器中输入这些详细信息。例如,我的运输商详细信息是:

const transporter = nodemailer.createTransport({
    host: "mail.schoolprogramming.tech",
    port: 465,
    secure: true, // true for 465, false for other ports
    auth: {
      user: "demo@schoolprogramming.tech",
      pass: "**************"
    }
  });

【讨论】:

  • 谢谢。我知道这只是一个示例,但我建议将带有凭据的任何内容更改为 process.env.USER 等,以帮助新开发人员远离不良做法,例如将登录凭据存储在字符串中。
猜你喜欢
  • 1970-01-01
  • 2013-11-21
  • 1970-01-01
  • 2018-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多