node.js nodemailer smtpTransport causes TypeError: this.mailcomposer.setMessageOption is not a function
node.js nodemailer smtpTransport causes TypeError: this.mailcomposer.setMessageOption is not a function
我正在尝试使用 nodemailer 通过 gmail 帐户发送电子邮件。我看了很多地方,似乎语法正确,但无论我使用什么示例,我都会收到类型错误。所以这是我正在使用的代码:
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 的新手,但不是编程人员。
你读过官方文档了吗here?
它指出:
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 传输的 README 选项。
我似乎通过尝试更多的东西偶然发现了一个修复程序。我在一台新机器上安装了 nodejs,然后将 js 文件加载到不同的目录,测试电子邮件没有问题。第一次安装的不同之处在于我加载到 C:\Program Files\nodejs\test 目录中的测试文件。我猜 nodejs 不喜欢那样。当我将同一个文件移动到 C:\test\test.js 时,问题就消失了。经验教训不要将文件放在 nodejs 目录中,运行 它们来自另一个位置。
对于自定义 SMTP,试试这个...
var transporter = nodemailer.createTransport({
host: 'mail.server.in',
port: 587,
auth: {
user: 'automail@server.in',
pass: 'password'
},
authMethod:'NTLM',
secure:false,
tls: {rejectUnauthorized: false},
debug:true
});
Node.js 无法验证您的 SMTP 服务器的证书。您可以使用 rejectUnauthorized: false 选项跳过证书验证
我正在尝试使用 nodemailer 通过 gmail 帐户发送电子邮件。我看了很多地方,似乎语法正确,但无论我使用什么示例,我都会收到类型错误。所以这是我正在使用的代码:
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 的新手,但不是编程人员。
你读过官方文档了吗here? 它指出:
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 传输的 README 选项。
我似乎通过尝试更多的东西偶然发现了一个修复程序。我在一台新机器上安装了 nodejs,然后将 js 文件加载到不同的目录,测试电子邮件没有问题。第一次安装的不同之处在于我加载到 C:\Program Files\nodejs\test 目录中的测试文件。我猜 nodejs 不喜欢那样。当我将同一个文件移动到 C:\test\test.js 时,问题就消失了。经验教训不要将文件放在 nodejs 目录中,运行 它们来自另一个位置。
对于自定义 SMTP,试试这个...
var transporter = nodemailer.createTransport({
host: 'mail.server.in',
port: 587,
auth: {
user: 'automail@server.in',
pass: 'password'
},
authMethod:'NTLM',
secure:false,
tls: {rejectUnauthorized: false},
debug:true
});
Node.js 无法验证您的 SMTP 服务器的证书。您可以使用 rejectUnauthorized: false 选项跳过证书验证