2016-01-20 1 views
0

Я пытаюсь создать событие календаря MS Outlook/Google Calendar в Symfony2, в то время как письмо отправляется с .ics-файлом, но я не могу получить добавленное событие в календарь. При попытке открыть файл, он говоритСгенерировать и отправить файл .ics через Symfony2 (Swift Mailer)

Failed to import events: Unable to process your iCal/CSV file.. 

Это, как я пытаюсь для генерации этого Ical файлу

$message=" 
    BEGIN:VCALENDAR 
    VERSION:2.0 
    CALSCALE:GREGORIAN 
    METHOD:REQUEST 
    BEGIN:VEVENT 
    DTSTART:".date('Ymd\THis', strtotime($meetingStartTime))." 
    DTEND:".date('Ymd\THis', strtotime($meetingEndTime))." 
    DTSTAMP:".date('Ymd\THis', strtotime($meetingStartTime))." 
    ORGANIZER;CN=XYZ:mailto:[email protected] 
    UID:".rand(5, 1500)." 
    ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP= TRUE;CN=Sample:[email protected] 
    DESCRIPTION:".$this->getUser()->getName()." requested Phone/Video Meeting Request 
    LOCATION: Phone/Video 
    SEQUENCE:0 
    STATUS:CONFIRMED 
    SUMMARY:Meeting has been scheduled by ".$this->getUser()->getName()." 
    TRANSP:OPAQUE 
    END:VEVENT 
    END:VCALENDAR"; 

$messageObject = \Swift_Message::newInstance(); 
$messageObject->setContentType("text/calendar"); 
$messageObject->setSubject("Your meeting has been booked") 
       ->setFrom($this->container->getParameter('mailer_user'), "From Name") 
       ->setTo($this->getUser()->getEmail()) 
       ->setBody(trim($message)); 
$this->get('mailer')->send($messageObject); 

Я очень признателен, если я могу получить некоторую помощь на то, что я делаю неправильно что приводит к ошибке Не удалось импортировать события: Не удалось обработать ваш ческих/файл CSV

+0

Почему вы не пишете файл ics на своем сервере, а затем отправляете его как вложение? – Veve

+0

@ Покажите мне пример на этом? как это действительно помогло бы много – Saadia

ответ

2

Вы должны вместо этого написать календари в на сервере (с помощью Filesystem component или с родными функциями PHP как), а затем отправить его в качестве вложения:

use Symfony\Component\Filesystem\Filesystem; 
use Symfony\Component\Filesystem\Exception\IOExceptionInterface; 

$fs = new Filesystem(); 

//temporary folder, it has to be writable 
$tmpFolder = '/tmp/'; 

//the name of your file to attach 
$fileName = 'meeting.ics'; 

$icsContent = " 
    BEGIN:VCALENDAR 
    VERSION:2.0 
    CALSCALE:GREGORIAN 
    METHOD:REQUEST 
    BEGIN:VEVENT 
    DTSTART:".date('Ymd\THis', strtotime($meetingStartTime))." 
    DTEND:".date('Ymd\THis', strtotime($meetingEndTime))." 
    DTSTAMP:".date('Ymd\THis', strtotime($meetingStartTime))." 
    ORGANIZER;CN=XYZ:mailto:[email protected] 
    UID:".rand(5, 1500)." 
    ATTENDEE;PARTSTAT=NEEDS-ACTION;RSVP= TRUE;CN=Sample:[email protected] 
    DESCRIPTION:".$this->getUser()->getName()." requested Phone/Video Meeting Request 
    LOCATION: Phone/Video 
    SEQUENCE:0 
    STATUS:CONFIRMED 
    SUMMARY:Meeting has been scheduled by ".$this->getUser()->getName()." 
    TRANSP:OPAQUE 
    END:VEVENT 
    END:VCALENDAR" 
; 

//creation of the file on the server 
$icfFile = $fs->dumpFile($tmpFolder.$fileName, $icsContent); 

//message to include as body to your mail 
$body = 'Hello...'; 

$messageObject = \Swift_Message::newInstance(); 
$messageObject->setSubject("Your meeting has been booked") 
       ->setFrom($this->container->getParameter('mailer_user'), "From Name") 
       ->setTo($this->getUser()->getEmail()) 
       ->setBody($body) 
       ->attach(Swift_Attachment::fromPath($tmpFolder.$fileName)) 
; 
$this->get('mailer')->send($messageObject); 

//remove the created file 
$fs->remove(array('file', $tmpFolder, $fileName)); 
+0

Кто-нибудь знает lib для OOP Создание файлов ICS, как это? – mblaettermann

+0

@mblaettermann посмотрите http://kigkonsult.se/iCalcreator/ – Veve

+0

Вы связаны с этим пакетом? Кажется, у него нет поддержки композитора. Спасибо, в любом случае. Dont хотите захватить эту нить дальше. Прошу прощения за оффтопик. – mblaettermann

1

Если вы хотите создать объектно-ориентированное программирование, вы можете использовать пакет: https://github.com/markuspoerschke/iCal

Установка может быть сделана с помощью композитору и нет никакой необходимости в добавлении свертка appKernel для Пользователей SF.

+0

Пожалуйста, укажите принадлежность к пакету :) – Squazz