【问题标题】:emailjs not working [node js]emailjs 不工作 [节点 js]
【发布时间】:2015-08-16 10:00:06
【问题描述】:

我正在尝试使用 emailjs (https://github.com/eleith/emailjs) 通过 nodejs 发送电子邮件,但是,它给了我一个错误:{ [Error: timedout while connected to smtp server] code: 4, smtp: undefined }

我正在尝试使用 hotmail,但我可以使用其他,我只希望它工作。请问有什么办法吗?

 var email   = require("emailjs");
    var server  = email.server.connect({
       user:    "xxx@hotmail.com", 
       password:"xxxyyyy", 
       host:    "smtp-mail.live.com", 
       ssl:     true
    });

    // send the message and get a callback with an error or details of the message that was sent
    server.send({
       text:    "i hope this works", 
       from:    "you <xxxxxx@hotmail.com>", 
       to:      "someone <zzzzz@hotmail.com>",
       //cc:      "else <else@your-email.com>",
       subject: "testing emailjs"
    }, function(err, message) { console.log(err || message); });

【问题讨论】:

  • 该错误表明这是一个简单的连接信息错误,或者您的网络有问题,除非您还提供了为邮件服务器提供的服务器连接信息(当然没有信用)
  • 见这里:github.com/eleith/… 你确定你需要 ssl,而不是 tls?
  • 此链接代码也不起作用。

标签: javascript node.js email web smtp


【解决方案1】:

我用下面的代码(使用 gmail)进行了测试,它正在工作:

var email = require('emailjs');

var server = email.server.connect({
  user: 'nodejsiscool@gmail.com',
  password: 'stackoverflow',
  host: 'smtp.gmail.com',
  ssl: true
});

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

在我的控制台中,输出是:

{ 
  attachments: [],
  alternative: null,
  header: { 
    'message-id': '<1433256538447.0.5970@Wilsons-MacBook-Pro.local>',
    date: 'Tue, 02 Jun 2015 10:48:58 -0400',
    from: '=?UTF-8?Q?NodeJS?= <>',
    to: '=?UTF-8?Q?Wilson?= <wilson.balderrama@gmail.com>',
    cc: '',
    subject: '=?UTF-8?Q?Greetings?=' 
 },
 content: 'text/plain; charset=utf-8',
 text: 'Hey howdy' 
}

确实,我在收件箱中收到了电子邮件。

我怀疑您应该使用主机 smtp.live.com 而不是 smtp-mail.live.com

注意:使用的帐户 (nodejsiscool@gmail.com) 是我刚刚创建的用于测试目的的有效帐户。

【讨论】:

    【解决方案2】:

    确保您正确链接 emailjs 文件(检查 var email),否则它将无法正常工作。

    //Email stuff
    var email   = require("./node_modules/emailjs/email");
    var server  = email.server.connect({
       user:    "EMAIL@gmail.com",
       password:"INSERTPASSWORDHERE",
       host:    "smtp.gmail.com",
       ssl:     true
    });
    
    //If button is clicked then send email
        server.send({
          text: 'Hello World! \n\n Regards,\n INSERTNAMEHERE \n',
          from: 'Name',
          to: 'Name <EMAIL@gmail.com>',
          cc: '',
          subject: ''
        }, function (err, message) {
          console.log(err || message);
        });
    

    【讨论】:

      【解决方案3】:

      使用 Gmail

      首先:需要激活使用不太安全的应用程序,风险自负,如 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); });
      

      补充说明:关于如何在Gmail收件箱中设置“发件人”和显示名称:

      示例 1:

      仅使用名称设置“发件人”。

      from:    "YOUR_NAME", // Only name
      

      收件箱显示

      YOUR_NAME <>                 Hello                                  18:11
      

      示例 2:

      用 name 和 emial 设置“from”。

      from:    "YOUR_NAME <YOUR_ACCOUNT@gmail.com>", // Name and email
      

      收件箱不显示

      YOUR_NAME                    Hello                                  18:11
      

      【讨论】:

      • 您好,我已经激活了使用不太安全的应用程序,但我遇到了类似ERROR TypeError: Class extends value undefined is not a constructor or null at Object../node_modules/emailjs/smtp/message.js at __webpack_require__ (bootstrap:79)的错误
      【解决方案4】:

      确保你安装了相同版本的包

       npm i emailjs@1.0.11
      

      并尝试下面的代码

      var email = require("emailjs");
      var server = email.server.connect({
      user: "your-email@gmail.com",
      password: "your-password",
      host: "smtp.gmail.com",
      ssl: true
      });
      
      server.send(
      {
      text: "Hey howdy",
      from: "NodeJS",
      to: "Wilson <your-email@gmail.com>",
      cc: "",
      subject: "Greetings"
      },
      function(err, message) {
       console.log(err || message);
      }
      );
      

      似乎最新版本无法使用 es6 导出“emailjs@1.0.11”,但版本仍然可以正常工作。 也不要忘记为您使用密码的电子邮件地址启用less secure设置。

      【讨论】:

        【解决方案5】:

        我觉得你可以用这个版本

        emailjs@2.2.0

        , 对我来说,这适用于 2.2.0 版 其中 3.0 及以上版本会显示错误。

        npm i emailjs@2.2.0
        

        here is the example

        【讨论】:

          猜你喜欢
          • 2015-03-04
          • 1970-01-01
          • 1970-01-01
          • 2018-06-15
          • 2016-09-18
          • 2017-05-23
          • 1970-01-01
          • 2017-11-28
          • 2021-02-10
          相关资源
          最近更新 更多