【问题标题】:Can't receive email with attachment from mailgun无法从 mailgun 接收带有附件的电子邮件
【发布时间】:2022-10-22 21:07:56
【问题描述】:

我从 mailgun 创建路由器以将电子邮件转发到我的网站端点www.example.com/messages 当它只有文本时我成功收到了电子邮件但是当我将文件附加到这封电子邮件时,我没有收到任何东西并且请求正文为空

export const incomingEmails = async (req, res) => {

const from = req.body.from.split('<')[0].trim();
const sender = req.body.sender;
const recipient = req.body.recipient;
const subject = req.body.subject;
const html = req.body['stripped-html'];

try {
    const incomingEmail = new Support({
        from,
        sender,
        recipient,
        subject,
        html
    })

    await incomingEmail.save();
    res.sendStatus(200)
} catch (error) {
    res.status(500)
    next(new Error('something went wrong'))
}}

我正在使用 urlencoded 中间件

app.use(express.urlencoded())

请注意我使用的堆栈是节点并在后端表示

【问题讨论】:

  • 显示您如何发送电子邮件的代码,以便我们进行调试。
  • 我用我的代码更新问题
  • 你提到的关于文件的部分在哪里
  • 此端点将接收来自 mailgun 的电子邮件,我的问题是如何调整它以便我可以接收带有附件的电子邮件,因为到目前为止,此端点只接收带有文本内容的电子邮件
  • 这回答了你的问题了吗? mailgun incoming mail event fetch attachment url

标签: node.js express mailgun


【解决方案1】:

我遇到了同样的问题,我想出了原因。我用前向法在我的后端接收电子邮件。 forward 方法仅在没有附件时有效。对于附件,Mailgun 将返回一个空正文,因为 Mailgun 必须首先存储附件,这是异步的。

为了解决这个问题,你必须使用存储方法而不是 forward 方法:

商店(通知端点)

将邮件临时(最多 3 天)存储在 Mailgun 的服务器上 以便您以后可以检索它。这对大 可能导致超时或您只想检索的附件 稍后再使用它们以减少服务器上的点击频率。

您必须在 Mailgun 网络应用程序中编辑您的路线:进入菜单中的“接收”下,然后编辑您现有的路线。

而不是输入:

forward("http://example.com/callback")

你输入:

store(notify="http://example.com/callback")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-23
    • 1970-01-01
    • 1970-01-01
    • 2021-03-06
    • 1970-01-01
    • 2013-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多