Twilio以PDF格式获取传真,将其附加在MailGun中,并通过request.js获取-未获得正确的文件名

时间:2018-10-15 10:47:55

标签: node.js twilio mailgun fax

我正准备将传真发送到Twilo并通过电子邮件附件发送。 我在node.js应用程序中使用request.js。 我收到了电子邮件和附件,但没有正确的文件名(没有扩展名)。如果我在浏览器中经过了req.body.MediaUrl,则获得具有有效文件名的正确文件。 我已经尝试过对URL进行编码,然后再通过encodeURIComponent(url)请求它,但是他给我发了一封未许可的信。可能是因为编码的令牌。

我有此代码:

app.post('/fax/received', (req, res) => {

  var request = require('request');
  var file = request(req.body.MediaUrl);
  var mailgun = require("mailgun-js");
  var api_key = 'mykey';
  var DOMAIN = 'mydomain.com';
  var mailgun = require('mailgun-js')({ apiKey: api_key, domain: DOMAIN });
  var reqp = JSON.stringify(req.body)
  var data = {
    from: "from@gmail.com",
    to: 'to@gmail.com',
    subject: 'Fax recived',
    text: 'things',
    attachment: file  //new mailgun.Attachment({ data: file, filename: 'fff.pdf', contentType: 'application/pdf' }) - this not working at all
  };
  mailgun.messages().send(data, function (error, body) {
    console.log(body)
  });
  res.status(200); /for twilio
  res.send();
});

MediaUrl看起来像这样:

https://media.twiliocdn.com/fax/AC38a6d46d19135679fa6db8c77a0a99aa/1d1aca46e24da8eae4b91efce2316ec28a65bb442a7b035c6b2f43459384fe07?x-amz-security-token=FQoGZXIvYXdzECIaDEOnbXTbs8YNqXm30CK3AxbT6vwjfpKYVclV%2FJgriygBa3U27k1ROJGmP9Z%2BjcU97DbHtjGMtiL2PSZvEHJRQ4Fy%2Bk1PRaC7Cl2W9J%2BgnHnW963bLale4zZASs6BJc17qXK8oGO4lBk3NrH%2B2dNxRrditXRWwyLCC3Pr6aQHKcb30Yn11K%2BuAyvojICarVSY0FjMFTD06drALYb8VNReOh5UkZt0LLnxBzcdz1%2FmjaHNTvgrZ8fAhlXa%2Fp86TUTVRfHRJ7UNnloPXNfdzEAVwAUk4%2FuI9gF9%2BFFovnagHa59uBe3sTJA83JEut6nIJZ5wl9vBYMDWPmMggpDSBDZ%2BEgJOS17bCC17a3gHIiPA5lFmVq%2BT19016ligzgNmvPTJAFnw7s4a9cwoDPt6uaFeZ82ArV6l3Y1s0DRp4oa%2Bju%2FPWOpjhJoykiSGKk20JPCYeDYsjbS2KFuDwbVqLgqvzDCPDDov5SXfmRztpUxl8%2FhdEYqxskqvss4Fu8DrLZpSYKq3taypB4aXE6agf3bPSfnI2o7LjC9Zda21H2Z9Up1aATO4Efj1aZ99kg43wZ2ot4cOqYzCjN5L7t50G4fk2g0lbobmEUoupqR3gU%3D&AWSAccessKeyId=ASIAS5VS5DJACXIZURAX&Expires=1539602784&Signature=kj0fU7fBovPESmcQHhwrtI%2F6r80%3D

我必须说,它可以与其他任何pdf文件一起正常工作,但是只是在twilio中它无法正常工作。我做错了什么?

1 个答案:

答案 0 :(得分:0)

使用twilio和mailGun支持一段时间后,在这种情况下,我必须将文件流式传输到服务器并从那里发送。我必须说,没有它,它就行得通了。这些代码应如下所示:

 var file = request(req.body.MediaUrl).
 pipe(fs.createWriteStream('file.pdf'))
.on('finish', function () { //here to sent the mail with the file
}