Node js从电子邮件地址发送网格空(必需)

Posted

技术标签:

【中文标题】Node js从电子邮件地址发送网格空(必需)【英文标题】:Node js Send grid Empty from email address (required) 【发布时间】:2018-01-14 11:42:43 【问题描述】:

我正在使用 Sendgrid 使用 Node jS 发送电子邮件。

但是我得到“电子邮件地址为空(必需)”,即使我已经指定了发件人地址。

用户注册时会发送邮件,但对于下面的函数调用,我得到了错误。

在我的 Routes/orders.js 中

// Start Sendgrid Configuration Settings
var options = 
    auth: 
        api_user: 'user123', // Sendgrid username
        api_key: '$user123' // Sendgrid password
    


var client = nodemailer.createTransport(sgTransport(options));
// End Sendgrid Configuration Settings  

router.post('/changeStatus', (req, res, next) => 
Orders.changeStatus(req.body.status, req.body.id, (err, orders) => 

    if (err) 
        res.json( success: false, msg: 'No Orders' );
    
    else 
        Orders.getUserByOrderNo(req.body.id, (err, user) => 
            //Send mail on success
            var email = 
                from: 'Localhost Staff, staff@localhost.com',
                to: user[0].user_id.email,
                subject: 'Welcome to ABC',
                text: 'Hello ' + user[0].user_id.username + ', thank you for registering at Food4Smiles.com. ',
                html: 'Hello<strong> ' + user[0].user_id.username + '</strong>,<br><br>Thank you for registering at ABC.com. '
            ;
            // Function to send e-mail to the user
            client.sendMail(user[0].user_id.email, function (err, info) 
                if (err) 
                    console.log(err); // If error with sending e-mail, log to console/terminal
                
                else 
                    console.log('Mesage sent !!' + info.response);
                
            );
        )
        res.json( success: true, order: orders );
    
);
)

models/orders.js

module.exports.getUserByOrderNo = function (orderNo, callback) 

    console.log(orderNo)
    Orders.find( orderNo: orderNo ).populate('user_id').exec(callback)

完整的错误堆栈跟踪:

错误:电子邮件地址为空(必填)

在 Request._callback (/var/www/html/Express/Local-MEAN-dev/node_modules/sendgrid/lib/sendgrid.js:88:25) 在 Request.self.callback (/var/www/html/Express/Local-MEAN-dev/node_modules/request/request.js:188:22) 在 emitTwo (events.js:106:13) 在 Request.emit (events.js:194:7) 在请求。 (/var/www/html/Express/Local-MEAN-dev/node_modules/request/request.js:1171:10) 在 emitOne (events.js:96:13) 在 Request.emit (events.js:191:7) 在传入消息。 (/var/www/html/Express/Local-MEAN-dev/node_modules/request/request.js:1091:12) 在 Object.onceWrapper (events.js:293:19) 在 emitNone (events.js:91:20) 在 IncomingMessage.emit (events.js:188:7) 在 endReadableNT (_stream_readable.js:974:12) 在 _combinedTickCallback (内部/进程/next_tick.js:80:11) 在 process._tickCallback (internal/process/next_tick.js:104:9)

【问题讨论】:

【参考方案1】:

好吧,我的错误是在 sendMail 函数中:

我不得不把它改成:

client.sendMail(email, function (err, info)

【讨论】:

以上是关于Node js从电子邮件地址发送网格空(必需)的主要内容,如果未能解决你的问题,请参考以下文章

通过 G Suite 电子邮件地址从服务器发送电子邮件

如何在不影响 Node.JS 应用程序的情况下从后台异步发送大量电子邮件?

有没有办法从我的 Node.js 服务器使用 Firebase Admin SDK 发送验证电子邮件?

电子邮件正文在文件中发送 [Gmail API, Node.js]

使用 nodemailer 通过 Node.js 发送电子邮件不起作用

在 Node.js 中发送电子邮件? [关闭]