使用smtp客户端发送电子邮件而不提供密码

时间:2016-04-22 14:45:52

标签: javascript node.js email smtp nodemailer

我正在使用nodemailer尝试通过命令行向我自己发送电子邮件:

var nodemailer = require('nodemailer');

// config
var smtpConfig = {
    host: 'smtp.myhost.com',
    port: 465,
    secure: false, // dont use SSL
    tls: {rejectUnauthorized: false} 
};

// create reusable transporter object using the default SMTP transport
var transporter = nodemailer.createTransport(smtpConfig);

// setup e-mail data with unicode symbols
var mailOptions = {
    from: '"Fred Foo " <foo@blurdybloop.com>', // sender address
    to: 'person@gmail.com', // list of receivers
    subject: 'Hello ✔', // Subject line
    text: 'Hello world ', // plaintext body
    html: '<b>Hello world </b>' // html body
};

// send mail with defined transport object
transporter.sendMail(mailOptions, function(error, info){
    if(error){
        return console.log(error);
    }
    console.log('Message sent: ' + info.response);
});

当我尝试运行此代码时,出现以下错误:

Error: Invalid login: 535-5.7.8 Username and Password not accepted. Learn more at\n535 5.7.8  https://support.google.com/mail/answer/14257

该链接会将您带到一个页面,告诉您在Google控制台中注册您的应用。但这不是我想要做的事情。

有大量电子邮件客户端可以向gmail收件箱发送电子邮件,而无需登录该电子邮件帐户。这就是我想要做的事情。我试图将我的终端变成一个可以向任何收件箱发送邮件的smtp客户端。这不应该需要大量的身份验证。我该怎么做?

为了提供一些观点,我尝试使用unix sendmail命令在节点中复制:

sendmail person@gmail.com < testemail.txt

如何使用nodemailer执行此操作?

1 个答案:

答案 0 :(得分:-1)

尝试端口587。

以下是我的Gmail设置。

smtpServerName="smtp.gmail.com" 
portNumber="587" 
authenticationMode="SSL" 
smtpUserName="somebody@gmail.com" 
smtpUserPassword="xxxxxxxxxx"

我会尝试使用ssl:false和ssl:true

nodemailer.SMTP = {
    host: 'smtp.gmail.com',
    port: 587,
    ssl: false,
    use_authentication: true,
    user: 'my.username@gmail.com',
    pass: 'my.password'
}

请务必阅读:

https://support.google.com/accounts/answer/6010255