我已经从Mailgun中存储的电子邮件中提取了附件。
SELECT STEP_ONE, STEP_TWO,
COUNT(*) FROM HOLIDAY_TB AS h inner join datesTest
on h.HOLIDAY_DATE>=STEP_ONE AND h.HOLIDAY_DATE<=STEP_TWO
group by STEP_ONE, STEP_TWO
现在,我需要一种方法来将其下载到服务器上的文件中。
https://sw.api.mailgun.net/v3/domains/xxxx.com/messages/AgEFb9QUzk8HBO7pSwVMB6qZaW0hSig8ZA==
结果:
url = "https://api:key-81c9c48ae617bc0d2@sw.api.mailgun.net/v3/domains/xxxx.com/messages/AgEFb9QUzk8HBO7pSwVMB6qZaW0hSig8ZA=="
headers = ["Accept": "message/rfc2822"]
{:ok, response} = HTTPoison.get(url, headers)
从上面来看,只有%HTTPoison.Response{
body: "{\"body-mime\": \"X-Mailgun-Incoming: Yes\\r\\nX-Envelope-From:....}
{:ok, decoded} = response.body |> Poison.decode
iex(14)> Map.keys(decoded)
["Content-Type", "Date", "Dkim-Signature", "From", "Message-Id", "Mime-Version",
"Received", "Subject", "To", "X-Envelope-From", "X-Gm-Message-State",
"X-Google-Dkim-Signature", "X-Google-Smtp-Source", "X-Mailgun-Incoming",
"X-Received", "body-mime", "from", "recipients", "sender", "subject"]
才有意义:
当我"body-mime"
出门时,只有一封大文本,里面有整封电子邮件。
所以我认为我在某个地方出错了。
没有相关文档,或者我找不到它!
答案 0 :(得分:2)
您的网址是附件的网址吗?
如果是这样,则可以使用File.write
将文件实际保存到服务器。
例如,如果附件是图像。
%HTTPoison.Response{body: body} = HTTPoison.get!(url)
File.write!("/tmp/image.png", body)
如果您的网址实际上只是电子邮件本身,则响应中应该包含一个attachments
,其中提供了附件的URL,您仍然可以如上所述获得它。
答案 1 :(得分:1)
Mailgun API documentation说起body-mime
:
完整的MIME信封。您将需要一个MIME解析库来处理这些数据。
一个这样的库是https://github.com/DockYard/elixir-mail。您应该能够获得如下附件:
decoded["body-mime"] |> Mail.Parsers.RFC2822.parse() |> Mail.get_attachments()