我正在尝试使用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的新手但不是编程。
答案 0 :(得分:1)
您是否阅读过官方文档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以获取选项。
答案 1 :(得分:0)
我似乎通过尝试更多的东西偶然发现了一个问题。我在一台新机器上安装了nodejs,然后将js文件加载到另一个目录,测试电子邮件解决了问题。第一次安装的不同之处是我加载到C:\ Program Files \ nodejs \ test目录中的测试文件。我想nodejs并不喜欢这样。当我将同一个文件移动到C:\ test \ test.js时,问题就消失了。获得的经验教训不要将文件放在nodejs目录中,而是从其他位置运行它们。
答案 2 :(得分:0)
对于自定义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选项
跳过证书验证