2015-04-29 2 views
1

Я пытаюсь отправить приглашение на календарь в Gmail с помощью sendgrid и swiftmailer. Это весь мой код:Отправить приглашение календаря iics с помощью Swift Mailer и Send Grid

<html> 
<head> 
    <title>PHP Test</title> 
</head> 
<body> 

<?php 

require_once('path/to/lib/swift_required.php'); 
require('path/to/smtpapi-php.php'); 

$transport = \Swift_SmtpTransport::newInstance('smtp.sendgrid.net', 587); 
$transport->setUsername('uname'); 
$transport->setPassword('pass'); 

$mailer = \Swift_Mailer::newInstance($transport); 

$ical="BEGIN:VCALENDAR\r\n 
PRODID:-//Microsoft Corporation//Outlook 14.0 MIMEDIR//EN\r\n 
VERSION:2.0\r\n 
METHOD:REQUEST\r\n 
Content-Type: text/calendar; charset="utf-8"; name=“invite.ics"; method=REQUEST'."\r\n"; 
Content-Disposition: inline; filename=“invite.ics"'."\r\n; 
BEGIN:VEVENT\r\n 
ATTENDEE;[email protected];RSVP= 
    TRUE:mailto:[email protected]\r\n 
CLASS:PUBLIC\r\n 
CREATED:20110803T133418Z\r\n 
DTEND:20150429T035959Z\r\n 
DTSTAMP:20110803T095605Z\r\n 
DTSTART:$20150429T170000Z\r\n 
LAST-MODIFIED:20110803T133418Z\r\n 
ORGANIZER;CN=\”bbb\”:mailto: 
[email protected]\r\n 
PRIORITY:5\r\n 
SEQUENCE:0\r\n 
SUMMARY;LANGUAGE=ro:New Event\r\n 
TRANSP:OPAQUE\r\n 
UID:".MD5(TIME())."-85d2-69b00dea0ad4\r\n 
X-MICROSOFT-CDO-BUSYSTATUS:TENTATIVE\r\n 
X-MICROSOFT-CDO-IMPORTANCE:1\r\n 
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY\r\n 
X-MICROSOFT-DISALLOW-COUNTER:FALSE\r\n 
X-MS-OLK-AUTOSTARTCHECK:FALSE\r\n 
X-MS-OLK-CONFTYPE:0\r\n 
BEGIN:VALARM\r\n 
TRIGGER:-PT15M\r\n 
ACTION:DISPLAY\r\n 
DESCRIPTION:Reminder\r\n 
END:VALARM\r\n 
END:VEVENT\r\n 
END:VCALENDAR\r\n"; 

$attachment = Swift_Attachment::newInstance() 
    ->setFilename("invite.ics") 
    ->setContentType('multipart/alternative;charset=UTF-8;name="invite.ics";method=REQUEST') 
    ->setBody($ical) 
    ->setDisposition('inline;filename=invite.ics'); 


$message = new \Swift_Message(); 
$message->setTo(array('[email protected]')); 
$message->setFrom('[email protected]'); 
$message->setSubject('Hello'); 
$message->attach($attachment); 

try { 
    $response = $mailer->send($message); 
    print_r($response); 
} catch(\Swift_TransportException $e) { 
    print_r('Bad username/password'); 
} 

?> 

</body> 
</html> 

Что происходит в том, что он посылает письмо с приложением мика, но Gmail и перспективы не признается, что его календарь пригласить. Не могли бы вы мне помочь?

Я использовал эту ссылку в качестве ссылки: ics file not recognized by outlook

ответ

2

Некоторые проблемы я вижу сразу:

  1. Вы не задающие тип text/calendar контента.
  2. Вы используете неправильные кавычки в заголовке содержимого и в других местах. ( вместо ").
  3. Вы внедряете тройные символы новой строки (\n\r\n), потому что у вас есть как real, так и \r\n.

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