node.js nodemailer smtpTransport导致TypeError:this.mailcomposer.setMessageOption不是一个函数

我正在尝试使用nodemailer使用Gmail帐户发送电子邮件。 我看了很多地方,似乎有正确的语法,但无论我使用什么样的例子,我总是得到一个types错误。 所以这里是我使用的代码:

var nodemailer = require('nodemailer'); var transporter = nodemailer.createTransport("SMTP",{ service: 'gmail', auth: { user: 'user@gmail.com', pass: 'pass' } }, { // default values for sendMail method from: 'sender@gmail.com', headers: { 'My-Awesome-Header': '123' } }); transporter.sendMail({ to: 'lucky@gmail.com', subject: 'hello', text: 'hello world!' }); 

这最终给我以下错误:

  C:\Program Files\nodejs\node_modules\nodemailer\lib\nodemailer.js:241 this.mailcomposer.setMessageOption(mailOptions); ^ TypeError: this.mailcomposer.setMessageOption is not a function at Nodemailer.setGeneralOptions (C:\Program Files\nodejs\node_modules\nodemailer\lib\nodemailer.js:241:23) at Nodemailer.generateMailObject (C:\Program Files\nodejs\node_modules\nodemailer\lib\nodemailer.js:196:10) at Nodemailer.sendMail (C:\Program Files\nodejs\node_modules\nodemailer\lib\nodemailer.js:184:10) at C:\Program Files\nodejs\node_modules\nodemailer\lib\nodemailer.js:69:20 at Nodemailer.validateSettings (C:\Program Files\nodejs\node_modules\nodemailer\lib\nodemailer.js:173:5) at sendMail (C:\Program Files\nodejs\node_modules\nodemailer\lib\nodemailer.js:63:12) at Transport.transport.sendMail (C:\Program Files\nodejs\node_modules\nodemailer\lib\nodemailer.js:40:9) at Object.<anonymous> (C:\Program Files\nodejs\hooks_examples\in testing\test2.js:17:13) at Module._compile (module.js:435:26) at Object.Module._extensions..js (module.js:442:10) 

任何想法将不胜感激…我是新的node.js,但不是编程。

你有没有读过这里的官方文档? 它指出:

 var nodemailer = require('nodemailer'); // create reusable transporter object using SMTP transport var transporter = nodemailer.createTransport({ service: 'Gmail', auth: { user: 'gmail.user@gmail.com', pass: 'userpass' } }); // NB! No need to recreate the transporter object. You can use // the same transporter object for all e-mails 

您不需要在以下位置指定"SMTP"部分:

 var transporter = nodemailer.createTransport("SMTP",{ service: 'gmail', auth: { user: 'user@gmail.com', pass: 'pass' } 

因为它是nodemailer的默认设置。 此外,请阅读SMTP传输的自述文件以获取选项。

我似乎试图通过尝试更多的东西,偶然find了一个解决办法。 我在一台新机器上安装了nodejs,然后把js文件加载到不同的目录下,testing邮件也没有问题。 第一次安装的不同是我加载到C:\ Program Files \ nodejs \ test目录下的testing文件。 我猜nodejs不喜欢那个。 当我将相同的文件移动到C:\ test \ test.js时,问题就消失了。 获得的教训不要将文件放置在nodejs目录中,从其他位置运行它们。