【问题标题】:Sendgrid inbound webhook with node and multer带有节点和 multer 的 Sendgrid 入站 webhook
【发布时间】:2016-10-11 18:32:32
【问题描述】:

我正在尝试使用 node、express 和 multer 通过入站 webhook 存储来自 sendgrid 的电子邮件。 sendgrids 网站上有一个示例如下:

var express = require('express');
var multer  = require('multer');
var upload = multer();
var app = express();

app.configure(function(){
  app.set('port', process.env.PORT || 3000);
  app.use(multer());
});
app.post('/parse', upload.array('files', 3) function (req, res) {
  var from = req.body.from;
  var text = req.body.text;
  var subject = req.body.subject;
  var num_attachments = req.body.attachments;
  for (i = 1; i <= num_attachments; i++){
    var attachment = req.files['attachment' + i];
    // attachment will be a File object
  }
});

var server = app.listen(app.get('port'), function() {
  console.log('Listening on port %d', server.address().port);
});

发送带有附件的电子邮件时,此代码会引发错误。错误是“意外字段”。我认为 array.upload("files",3) 的声明是问题所在。有人解决了吗?

【问题讨论】:

  • 您找到解决方案了吗?
  • 已将入站电子邮件切换为邮筒。我们使用 Sendgrid 发送邮件,并将收到的电子邮件映射到 Mailgun。 Mailgun 可以更好地处理附件。他们为您提供了一个 URL,我们只需从该 URL 中提取附件并存储它。简而言之,我们只需获取每个 URL(附件)并即时存储它,Mailgun 为入站电子邮件提供了一个很好的设置,而且他们收取的费用非常少,所以当我们有这个时,这样做更容易问题。

标签: javascript node.js sendgrid


【解决方案1】:

当你没有字段名时,你可以使用 .any() 来解决这个问题(见documentation for any()

这是一个示例代码

app.post('/parse', upload.any() function (req, res) {
  var from = req.body.from;
  var text = req.body.text;
  var subject = req.body.subject;
  var num_attachments = req.body.attachments;
  for (i = 1; i <= num_attachments; i++){
    var attachment = req.files['attachment' + i];
    // attachment will be a File object
  }
});

【讨论】:

    猜你喜欢
    • 2015-08-07
    • 1970-01-01
    • 1970-01-01
    • 2019-07-08
    • 2014-01-18
    • 1970-01-01
    • 2016-04-27
    • 2016-10-04
    • 1970-01-01
    相关资源
    最近更新 更多