1

所以,我使用 cloud9 作为 IDE、nodejs、express 和 nodemailer@0.7.1 和 nodemailer-sendgrid-transport。这是我的代码:

var nodemailer=require('nodemailer');
var sgTransporter = require('nodemailer-sendgrid-transport');
var options={
    auth: {
        api_user: "xxx",
        api_pass: "xxx"
    }
};
var client = nodemailer.createTransport(sgTransporter(options));

var sendMail=function(emailTo, subject, html, fn){
    var mailOptions={
        from:'xxx',
        to:emailTo,
        subject:subject,
        html:html
    };

    client.sendMail(mailOptions, function(error, response){
        if(error){
            console.log(error);
            fn(error);
        }
        else{
            console.log("Message sent: " + response.message);
            fn(response);
        }
    });
};

这里调用了 sendMail 函数:

router.get('/verifyEmail', function(req,res){
    if(req.isAuthenticated()) {
        var subject='Verify your email address';
        var link="https://myapp-myuser.c9users.io/verify/:"+req.user._id;
        var html='Hello,<br> Please Click on the link to verify your Account.<br><a href='+link+'>Click here to verify</a>';
        console.log('Sending verification email to: '+req.user.email);
        sendMail(req.user.email,subject, html,function(error, response){
            if (error){
                return res.status(400).json({error:error});
            }
            return res.status(200).json(response);
        });
    }
});

但是没有发送电子邮件......我收到以下错误: [Error: No transport method defined]

我尝试了许多不同的解决方案。在我看来,我正在做与此示例完全相同的事情:https ://sendgrid.com/blog/sending-email-nodemailer-sendgrid/ 这可能是 cloud9 问题吗?我也尝试过使用 gmail 帐户。同样的错误,在允许不安全的应用程序后...

编辑:好的,我已将 nodemailer 升级到 2.4.2 版,并引发了一个新错误......[Error: The provided authorization grant is invalid, expired, or revoked]

4

1 回答 1

0

大多数时候......这是小事,天哪,我被困在这个......问题是这样的:

auth: {
    api_user: "xxx",
    api_pass: "xxx"
}

应该是这样写的:

auth: {
    api_user: "xxx",
    api_key: "xxx"
}

那,和nodemailer的版本......

于 2016-06-15T20:41:18.137 回答