如何检索和保存通过Mailgun的post表单发送给我的附件
下面是一些参数
attachment-1
{:filename=>"crabby.gif", :type=>"image/gif", :name=>"attachment-1", :tempfile=>#<Tempfile:/tmp/RackMultipart20140707-2-slsrkh>, :head=>"Content-Disposition: form-data; name="attachment-1"; filename="crabby.gif"rnContent-Type: image/gifrnContent-Length: 2785rn"}
attachment-2
{:filename=>"attached_файл.txt", :type=>"text/plain", :name=>"attachment-2", :tempfile=>#<Tempfile:/tmp/RackMultipart20140707-2-sudxuf>, :head=>"Content-Disposition: form-data; name="attachment-2"; filename="attached_файл.txt"rnContent-Type: text/plainrnContent-Length: 32rn"}
Content-Type
multipart/mixed; boundary="------------020601070403020003080006"
所以我知道这是一年晚了,但我有同样的问题,并弄清楚如何下载附件。post中的文件存储在环境变量$_FILES中。每个文件的信息看起来像这样:
Array
(
[attachment-1] => Array
(
[name] => ATextFile.txt
[type] => text/plain
[tmp_name] => /tmp/php8zhmlU
[error] => 0
[size] => 70144
)
)
文件的路径存储在tmp_name
中,因此在本例中,/tmp/php8zhmlU
是文件的完整路径。move_uploaded_file
将覆盖任何现有的文件!为了从POST
下载所有附件,我编写了一个函数:
function download_attachments($pathToDownloadDirectory)
{
foreach($_FILES as $file)
{
if($file['error'] == "0")
{
if(!(move_uploaded_file($file['tmp_name'], $pathToDownloadDirectory . $file['name'])))
{
return 0;
}
}
else
{
return 0;
}
}
return 1;
}
download_attachments("/Full/Path/To/Some/Dir/");
这个顶部的文档可以在这里找到
- 从路由会话中使用存储操作来获取信息关于你的邮件。(检索存储的消息
- json_decode "attachments"属性以获取信息关于您的附件 获取api密钥并使用php库来使用get api。
如果你的json解码的附件列表是$files,你可以做
$mgClient = new Mailgun('yourApiKey');
foreach ($files as $file){
file_put_contents($file->name,$mgClient->get($file->url)->http_response_body);
}
下载所有附件