mailgun传入邮件事件获取附件URL

时间:2017-05-09 14:17:36

标签: node.js mailgun

我有一个节点端点,它接收来自json的传入电子邮件,包含来自mailgun的任何附件。

附件位于json数组中(xxx.com用于隐私)

attachments: '[{"url": "https://sw.api.mailgun.net/v3/domains/xxx.com/messages/eyJwIjpmYWxzZSwiayI6ImZhMTU0NDkwLWVmYzgtNDVlNi1hYWMyLTM4M2EwNDY1MjJlNCIsInMiOiI2NmU1NmMzNTIwIiwiYyI6InRhbmtiIn0=/attachments/0", "content-type": "image/png", "name": "ashfordchroming_logo.png", "size": 15667}]

但是如果我在浏览器中输入网址:

https://sw.api.mailgun.net/v3/domains/xxx.com/messages/eyJwIjpmYWxzZSwiayI6ImZhMTU0NDkwLWVmYzgtNDVlNi1hYWMyLTM4M2EwNDY1MjJlNCIsInMiOiI2NmU1NmMzNTIwIiwiYyI6InRhbmtiIn0=/attachments/0

我得到了

{
  "message": "Domain not found: xxx.com"
}

我想用最简单的方式在HTML中显示图片附件,我希望URL能够正常工作,因为mailgun会存储附件。

所以我只是尝试在Node中的模板中呈现url。

我是否需要将auth / API密钥凭据附加到URL的前面才能执行此操作以进行测试和工作?

1 个答案:

答案 0 :(得分:3)

如果您想访问原始json,请转到

https://sw.api.mailgun.net/v3/domains/xxx.com/messages/eyJwIjpmYWxzZSwiayI6ImZhMTU0NDkwLWVmYzgtNDVlNi1hYWMyLTM4M2EwNDY1MjJlNCIsInMiOiI2NmU1NmMzNTIwIiwiYyI6InRhbmtiIn0=/attachments/0

使用用户名'api'和密码'your-mailgun-privatekey'。

要以编程方式执行此操作,请使用请求包来读取缓冲区。

const rp = require("request-promise");
let file = rp.get({
  uri: "attachement-url",
  headers: {
    "Accept": "message/rfc2822"
  }
}).auth("api", "your private key")
/**Access the buffer here**/
file.on('data', (s => {
  console.log(s)
}))
file.pipe(fs.createWriteStream("./my-image.jpg"))

您可以将文件传输到S3或任何云存储桶。