google calendar api — динамически создайте файл ics и отправьте электронное письмо в виде вложения

Мне нужно динамически создать календарь приглашения и отправить файл ics в виде вложения. Я использую sendgrid для отправки писем.

Это мой php скрипт на данный момент:

include("/Users/path/sendgrid-php.php");
$sendgrid = new SendGrid("uname", "pass");
$email    = new SendGrid\Email();

$ical = "BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
UID:" . md5(uniqid(mt_rand(), true)) . "@test.com
DTSTAMP:" . gmdate('Ymd').'T'. gmdate('His') . "Z
DTSTART:19970714T170000Z
DTEND:19970715T035959Z
SUMMARY:New event
END:VEVENT
END:VCALENDAR";

header('Content-type: text/calendar; charset=utf-8');
header('Content-Disposition: inline; filename=invite.ics');

$email->addTo("[email protected]")
->setFrom("[email protected]")
->setSubject("Test-Subject")
->setHtml("Test-Body")
->setAttachment($ical);

$sendgrid->send($email);

Теперь, когда я запускаю этот скрипт, вместо отправки файла ics в виде вложения на указанный адрес электронной почты, мой браузер автоматически загружает файл ics, закрывает страницу и ничего не делает (электронное письмо не отправляется).

Можете ли вы сказать мне, пожалуйста, где я здесь не так? Я только начал с PHP, поэтому есть вероятность, что я сделал глупую ошибку.

Благодарю.

2

Решение

Поведение, которое вы видите, вызвано вашим header() звонки.

header('Content-type: text/calendar; charset=utf-8');
header('Content-Disposition: inline; filename=invite.ics');

Эти две строки отправляют заголовки в браузер клиента и запускают загрузку.

в Примеры PHP для SendGrid Я не вижу, чтобы они так устанавливали заголовки.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]