我正在使用谷歌应用引擎发送基于 https://github.com/godsid/appEngineSendMail 的电子邮件
所以我从远程主机发出了一个 curl post 请求,它可以工作。
但是如何将文件附加到应用程序引擎?
这是我的卷发post_fields
$fields = array(
'to' => urlencode($to),
'sender' => urlencode($from),
'body' => urlencode($body),
'subject' => urlencode($subject),
'key' => urlencode('****')
);
$fields['attachments']= array("@". $_FILES['attachment']['tmp_name']);
我已经在寻找答案 2 天了...任何帮助或提示都值得赞赏
问题是我url_encoding字段数组,这样做会阻止 cURL 实际注意到@filename并将文件附加到请求中。
所以我不得不使请求多部分
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-type: multipart/form-data"));
并将字段附加到请求中而不对其进行编码
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
我在 Python 方面的错误是使用 self.request.get(),这是 GitHub 上的脚本使用的,我所基于的
脚本所以我不得不使用 self.request.post[],像这样
attachment = self.request.POST["attachment"] #actual attachment file
attachment_name = self.request.POST["attachment_name"] #string value of attahcment name sent from php side
message.attachments = [(attachment_name, attachment.value)]
*注意self.request.get是一个函数,self.request.post 是一个数组
希望有一天这对某人有所帮助:)
您可以轻松地放入多个附件。对于每个附件,您需要输入文件名和文件数据。
$fields['attachments'] = array(
$_FILES['attachment']['name'] => file_get_contents($_FILES['attachment']['tmp_name'])
);