2015-04-20 2 views
2

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

Это мой 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, поэтому вероятность того, что я, должно быть, сделал какую-то глупую ошибку.

Спасибо.

+0

Вы пытались удалить две строки 'header (...)'? – jeromegamez

ответ

1

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

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

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

В SendGrid PHP examples Я не вижу, чтобы они устанавливали такие заголовки вообще.

Смежные вопросы