Как и в описанном заголовке, я пытаюсь создать элемент ical и отправить его через gmail smtp в почтовый ящик. Вот как выглядит мой код:
include_once ("Mail/Mail.php");
include_once ("Mail/mime.php");
$ical = 'BEGIN:VCALENDAR
METHOD:PUBLISH
VERSION:2.0
PRODID:-//TITLE//COMPANY//DE
BEGIN:VEVENT
SUMMARY:' . $company. '
UID:' . $id . '
STATUS:CONFIRMED
DTSTART:' . $startdate . '00
DTEND:' . $enddate . '00
DESCRIPTION:' . $description . '
LOCATION:' . $location . '
END:VEVENT
END:VCALENDAR';
$hdrs = array (
'From' => $from_name . ' <' . $from_address . '>',
'Subject' => $subject,
);$textparams = array (
'charset' => 'utf-8',
'content_type' => 'text/html',
'encoding' => 'base64'
);
$calendarparams = array (
'charset' => 'utf-8',
'content_type' => 'text/calendar;method=PUBLISH',
'encoding' => 'base64',
);
$email = new Mail_mimePart ( '', array (
'content_type' => 'multipart/mixed'
) );
$textmime = $email->addSubPart ( $message, $textparams );
$htmlmime = $email->addSubPart ( $ical, $calendarparams );
$final = $email->encode ();
$final ['headers'] = array_merge ( $final ['headers'], $hdrs );
$smtp = Mail::factory ( 'smtp', array (
'debug' => true,
'host' => $host,
'auth' => true,
'port' => $port,
'username' => $username,
'password' => $password
) );
$mail = $smtp->send ( $to_address, $final ['headers'], $final ['body'] );
Этот пример отлично работает на localhost с запущенным xampp. Но как только я пытаюсь заставить его работать на сервере, я получаю письмо с вложением:
not supported calender message.ics
Это в Outlook 2010. Я могу дважды щелкнуть файл, и он покажет мне правильный файл календаря. Что мне не хватает?
Работает на Windows 7 с сервером Exchange 2010.
Использование Pear Mail 1.2.0 и PHP
Задача ещё не решена.
Других решений пока нет …