使用sendgrid如何知道我的电子邮件是否反弹或在我的代码中成功交付

我正在使用Sendgrid npm模块发送电子邮件给我的客户与node.js,现在我面临着一个问题,当我发送一封电子邮件到一个不存在的电子邮件,然后我的电子邮件正在反弹,但在我的服务器响应代码我越来越“成功”,但在我的sendgrid的仪表板它显示我的电子邮件被反弹,现在任何人都可以请告诉我我怎么能知道我的代码是否我的代码反弹或成功发送。

我的代码如下

var options = { auth: { api_user: 'abc', api_key: 'pass' } } var mailer = nodemailer.createTransport(sgTransport(options)); var email = { to: email_id, from: 'noreply@abc.com', subject: 'ABC Verification Code', text: "Your ABC Verification Code is " + totp // html: '<b>Awesome sauce</b>' }; mailer.sendMail(email, function(err, res) { if (err) { console.log(err); res.json({success : 0, message : "Sorry Please try Again"}); return next(); } else { console.log('res: ', res); res.json({success : 1, message : "Successfully Sent Otp To Email Id"}); return next(); } }); 

还有一个问题,当我发送我的电子邮件使用取消订阅组ID,那么我的电子邮件总是交付在Gmail的“促销”部分任何人都可以请告诉我如何显示我的电子邮件给用户在Gmail的“更新”部分。

SendGrid API是asynchronous的。 您的请求被接受,然后经过包括交付在内的多个处理阶段。 如果他们不得不等待交付尝试,则API请求需要很长时间才能响应。

你有两个select。 最好的select是使用事件webhook实时接收事件。 有一些nodejs事件webhook示例代码 :

 var express = require('express'); var app = express(); app.configure(function(){ app.set('port', process.env.PORT || 3000); app.use(express.bodyParser()); }); app.post('/event', function (req, res) { var events = req.body; events.forEach(function (event) { // Here, you now have each event and can process them how you like processEvent(event); }); }); var server = app.listen(app.get('port'), function() { console.log('Listening on port %d', server.address().port); }); 

或者,您可以通过API调查您的抑制列表,例如使用反弹端点。

无法控制gmail使用哪个标签来显示您的邮件,这是基于Google对邮件内容和您的发送习惯的分析。