如何从Node.js发送电子邮件?

时间:2017-07-29 15:14:01

标签: javascript node.js smtp

我正在尝试从React / Node.js应用程序发送电子邮件。目前,我是 试图使用emailjs模块。

代码如下:

const emailjs = require('emailjs')

sendEmail(email) {
  var server    = emailjs.server.connect({
    user:    "USERNAME", 
    password:"PASSWORD", 
    host:    "HOST_URL", 
    ssl:     false
  });
  server.send({
    text:    'Message', 
    from:    '"Sender" <mail@provider.com>', 
    to:      email,
    subject: "Some message subject"
  }, 
  function(err, message) { 
    console.log(err || message); 
  });
}

执行此方法时,出现以下错误:net.Socket is not a constructor

如何从Node.JS应用程序发送电子邮件(使用任何NPM模块,不一定是emailjs)?

更新1(30.07.2017 09:12 MSK): Nodemailer不起作用 - 我收到错误09:11:03 web.1 | Module not found: Can't resolve 'dns' in 'C:\myproject\node_modules\nodemailer\lib\mailer'

Nodemailer error

3 个答案:

答案 0 :(得分:1)

我使用nodemailer发送电子邮件,只是喜欢它是多么简单。

这是该模块的网站:https://nodemailer.com/about/

它包含您可以遵循的所有示例 以下是我从w3school获得的一个例子。我总是使用它并且像魅力一样工作。取决于您使用的是哪种电子邮件(gmail,hotmail,outlook,...),进行适当的更改并且您感觉良好

var nodemailer = require('nodemailer');

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

var mailOptions = {
  from: 'youremail@gmail.com',
  to: 'myfriend@yahoo.com',
  subject: 'Sending Email using Node.js',
  text: 'That was easy!'
};

transporter.sendMail(mailOptions, function(error, info){
  if (error) {
    console.log(error);
  } else {
    console.log('Email sent: ' + info.response);
  }
});

答案 1 :(得分:0)

我找到了问题的原因。最初,发送电子邮件的功能位于React组件内。 this question中的答案说,从前端发送电子邮件是不可能的。

所以我将电子邮件发送例程移到server.js,现在原始错误消失了。

答案 2 :(得分:0)

嗨@DP_和大家.-

我已经成功实现了nodemailer,多亏了你,我有相同的DNS错误并将Send函数移动到server.js,这对我帮助很大。然而,为了使它与Nodemailer一起工作我使用了Hapi.js和xoauth2因为我想通过gmail发送自定义电子邮件,这对我来说非常重要。您需要首先在Google Api上配置Xoauth2并首先将api添加到您的帐户,然后等待一段时间直到您的refreshToken获得批准并将其添加到您的应用中。这就是我的所作所为,希望这有助于某人因为我花了一些时间才能让它发挥作用。