从远程主机使用 Google 应用引擎发送电子邮件,如何附加文件


sending email with google app engine from remote host, how do I attache a file?

我正在使用谷歌应用引擎发送基于 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'])
);