使用 Mandrill API 检索入站消息

Posted

技术标签:

【中文标题】使用 Mandrill API 检索入站消息【英文标题】:Retrieving an inbound message using the Mandrill API 【发布时间】:2015-07-24 20:08:47 【问题描述】:

我正在尝试从 Mandrill 上的 API 检索入站消息,但是当我调用 sendRaw 方法时,API 失败并出现错误,提示我需要指定原始消息值。我猜 SendRaw 正在发送我指定的消息,而不是返回我请求的消息?

static async Task<string> SendRaw(string key)//,string )
    
        string sendRaw = mandrillAPI + "inbound/send-raw.json";
        HttpClient client = new HttpClient();
        client.BaseAddress = new Uri(sendRaw);
        HttpResponseMessage response = await client.GetAsync(key);
        string s = await response.Content.ReadAsStringAsync();
        return s;
    

原始消息是我要检索的内容,所以我不知道如何提供它。

有没有办法使用 API 从服务器检索消息?如果这是错误的说法......让我们这样说吧:我用 Mandrill 设置了一个域,并向该域上的一个虚构邮箱发送了一条消息。服务器转发了消息——我可以在 Mandrill 仪表板上查看消息的 SendRaw API 调用。我想从它所在的任何地方检索消息……它是否位于 Mandrill 的服务器上,或者它是否被发送到我需要监听发送的域,我不知道。我对此很陌生(大约在昨天)。不管怎样,我需要得到那个消息。是否可以使用 API 来实现?

还是 Mandrill 只是在消息最初发送时将消息中继到我的 url,我需要设置 url 来接收消息才能获取它?

【问题讨论】:

方法中的哪一行失败了? API 方法...所以我打电话给mandrillAPI.com/api/1.0,方法是“inbound/send-raw.json”。我从 API 得到的响应是“验证错误:您必须指定原始消息值”。我认为这意味着 send-raw 是从字面上发送原始消息。但它是入站/发送原始消息,所以我认为它可能会发送入站消息......但它实际上可能正在发送我指定的原始消息。无论哪种方式,我都想以某种方式检索我发送的消息...... 哪一行调用了你所指的“API方法”?是第 1 行(字符串声明)、第 4 行(HttpResponsemessage 声明)还是第 5 行(读取响应)? client.GetAsync(key) 使用 URL 访问 API。虽然代码中没有错误。 API 请求通过并返回。消息的内容表明我需要将原始消息作为参数提供给 API 调用......但是,我想要做的是检索消息。我想我可能需要在我为入站消息设置的域上设置某种 HTTP 侦听器,以便获取电子邮件的内容……但我不知道。 【参考方案1】:

无法通过 Mandrill API 检索入站邮件。 Mandrill 接收入站邮件,转换为inbound/send-raw API call,然后发布到您为入站路由指定的 webhook。 Mandrill 不存储用于 API 检索的消息内容。将它们发布到您的 webhook URL 后,该消息将被丢弃。请注意,inbound/send-raw 与 messages/send-raw 不同。 inbound/send-raw API 调用允许您模拟如果您将消息发送到您设置的路由(即,POST 到 webhook URL)会发生什么。

有关入站邮件的工作原理和 webhook 的更多信息可以在 Mandrill KB 中找到:https://mandrill.zendesk.com/hc/en-us/categories/200277247-Inbound-Email-Processing

【讨论】:

谢谢。最终使用路由将电子邮件转发到 gmail。希望这种解决方法暂时会延迟处理 webhook。

以上是关于使用 Mandrill API 检索入站消息的主要内容,如果未能解决你的问题,请参考以下文章

将 Mandrill JSON webhook 入站电子邮件附件映射到 C# 类

在 .NET 中验证 Mandrill 入站 Webhook 请求

在使用 mandrill 发送电子邮件并在入站事件中接收元数据时添加自定义元数据

通过 Laravel / PHP 的 Mandrill 入站电子邮件

Mandrill 通过 REST API 作为单独的消息发送给多个人

发送消息 API 响应中的 Mandrill status = "invalid" 是啥意思