Google App Engine - Почта () вложение
Я могу успешно отправлять электронные письма с 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);
1 ответ
Я никогда не пишу код на PHP, но похоже, что вы на самом деле не читаете содержимое файла.
В большинстве языков программирования такой вызов fopen
это только первый шаг к получению содержимого файла, но на самом деле это не получение содержимого. Вам, вероятно, понадобится что-то вроде этого:
$f = fopen('gs://pro-sitemaps-api/file.csv', 'r');
$image_data = $f.read();
но вам нужно выяснить, как читать данные из файла в PHP.