【问题标题】:Not getting emails from emailjs and smtp-server - Nodejs没有从 emailjs 和 smtp-server 收到电子邮件 - Nodejs
【发布时间】:2016-12-19 07:18:33
【问题描述】:

我正在尝试构建一个在触发某些事件时发送电子邮件的应用程序。

我没有收到任何错误,但我的收件箱没有收到任何电子邮件。

这是代码:

SMTP:

var SMTPServer = require('smtp-server').SMTPServer;
var server = new SMTPServer({
    secure: false, authOptional: true
});
server.listen(465);

电子邮件:

var email = require('emailjs');

var emailServer = email.server.connect({
    host: 'localhost',
    port: 465,
    ssl: false
});

emailServer.send({
    text: 'Hey howdy',
    from: 'NodeJS',
    to: 'Wilson <person@gmail.com>',
    cc: '',
    subject: 'Greetings'
}, function (err, message) {
    console.log(err || message);
});

我在控制台上看到的输出是:

{ attachments: [],
  alternative: null,
  header:
   { 'message-id': '<1470995427701.0.2864@DESKTOP-M85CNRC>',
     date: 'Fri, 12 Aug 2016 12:50:27 +0300',
     from: '=?UTF-8?Q?NodeJS?= <>',
     to: '=?UTF-8?Q?Wilson?= <person@gmail.com>',
     cc: '',
     subject: '=?UTF-8?Q?Greetings?=' },
  content: 'text/plain; charset=utf-8',
  text: 'Hey howdy' }

知道缺少什么吗?

谢谢

【问题讨论】:

    标签: node.js email smtp nodemailer


    【解决方案1】:

    我使用对我的测试不是很重要的 Gmail 帐户,而不是模块 smtp-server。

    首先:需要激活使用不太安全的应用程序,风险自负,如 Gmail 文档中所述:

    https://myaccount.google.com/u/2/lesssecureapps?pageId=none

    之后:

    var email   = require("emailjs");
    var server  = email.server.connect({
       user:    "YOUR_ACCOUNT@gmail.com", 
       password:"YOUR_PASSWORD", 
       host:    "smtp.gmail.com",
       ssl:     true
    });
    
    server.send({
       text:    "Hello world", 
       from:    "YOUR_NAME <YOUR_ACCOUNT@gmail.com>", 
       to:      "FRIEND_NAME <FRIEND_ACCOUNT@gmail.com>",
       subject: "Hello"
    }, function(err, message) { console.log(err || message); });
    

    【讨论】:

      【解决方案2】:

      在 emailjs 文件中主机不能是 localhost 它应该是:smtp.your-email.com

      var server  = email.server.connect({
         user:    "username", 
         password:"password", 
         host:    "smtp.your-email.com", 
         ssl:     true
      });
      

      【讨论】:

      • 我如何知道 smtp 主机,据我了解,smtp-server 模块在 localhost 上创建它,对吗?
      【解决方案3】:

      我正在使用nodemailer-smtp-transport 并且非常适合我,下面是我发送邮件的函数内部的配置。希望这可能会有所帮助。

      var nodemailer = require('nodemailer'),
      smtpTransport = require("nodemailer-smtp-transport");
      
      //configuration
      var transporter = nodemailer.createTransport(smtpTransport ({
              auth: {
                  user: user,   //email of sender
                  pass: pass    //password of sender
              },
              host: host,    //my email host
              secureConnection: true,
              port: 587,
              tls: {
                  rejectUnauthorized: false
              },
          }));    
      
          var mailOptions = {
              from: user,
              to: to,
              subject: subject,
              text: text
          }
      
          transporter.sendMail(mailOptions, function(error, info){
               if(error){
                 console.log(error);
              }else{
                 console.log("success");
              }
          });
      

      【讨论】:

      • 感谢您的回答,我尝试按照您的回答,但仍然没有工作。我设置的 smtp 来自 smtp-server 模块,它不需要凭据。如何在没有凭据的情况下连接它?
      • 我不确定您是否可以在没有凭据的情况下发送邮件,我知道在 php 中您可以在没有凭据的情况下发送电子邮件,但不确定是否使用 node.js,无论如何,没关系。
      猜你喜欢
      • 2019-07-16
      • 1970-01-01
      • 2018-02-16
      • 2022-10-18
      • 2016-09-30
      • 2018-06-01
      • 2022-12-07
      • 1970-01-01
      • 2013-05-21
      相关资源
      最近更新 更多