我可以使用App Engine Mail API
成功发送电子邮件,但是找不到为什么附件未附加到电子邮件中的问题。我的代码如下:
// Pull in the raw file data of the image file to attach it to the message.
$image_data = fopen('gs://pro-sitemaps-api/file.csv');
try {
$message = new Message();
$message->setSender('myemail@****.com');
$message->addTo('myemail@****.com');
$message->setSubject('Subject Google App Engine Test');
$message->setTextBody('Test body');
$message->addAttachment('file.csv', $image_data);
$message->send();
echo 'Mail Sent';
} catch (InvalidArgumentException $e) {
echo 'There was an error'.$e;
}
我的文件托管在Google Storage
(存储桶)中。存储文件的文件类型为.csv
有人可以告诉我我在做什么错吗?
编辑:
添加“ mode”:“ r”给我这个错误:
$image_data = fopen('gs://pro-sitemaps-api/file.csv', 'r');
输出:
error: {
code: "500",
message: "An error occurred parsing (locally or remotely) the arguments to mail.Send().",
status: "UNKNOWN",
details: [ ]
}
}
编辑:
这有效,但这仅发送第一行(标题)。并非所有行。尝试将其添加到数组中并将数组作为附件发送,但是我遇到了同样的错误。
$fpmail = fopen('gs://pro-sitemaps-api/file.csv', 'r');
//$attach = fread($fpmail);
$attach = fgets($fpmail);
print_r($attach);
try {
$message = new Message();
$message->setSender('asim@redperformance.no');
$message->addTo('asim@redperformance.no');
$message->setSubject('Test');
$message->setTextBody('Test nyeste');
$message->addAttachment('file.csv', $attach);
$message->send();
echo 'Mail Sent';
} catch (InvalidArgumentException $e) {
echo $e;
}
fclose($fpmail);
答案 0 :(得分:1)
我从来没有用PHP编写过代码,但是看起来您实际上并没有在读取文件的内容。
在大多数编程语言中,像fopen
之类的调用只是获取文件内容的第一步,而实际上并没有获取内容。您可能需要这样的东西:
$f = fopen('gs://pro-sitemaps-api/file.csv', 'r');
$image_data = $f.read();
但是您需要弄清楚如何从PHP中的文件中读取数据。