2014-06-26 30 views
0

我試圖從PHP代碼發送會議邀請,我通過ics文件發送會議邀請。但是,ics文件作爲Gmail附件發送,但未反映在Outlook中。ics文件未反映在Outlook日曆中

這是下列文件格式,我有:

BEGIN:VCALENDAR 
PRODID:-//Microsoft Corporation//Outlook 10.0 MIMEDIR//EN 
VERSION:2.0 
METHOD:REQUEST 
X-MS-OLK-FORCEINSPECTOROPEN:TRUE 
BEGIN:VEVENT 
ATTENDEE;[email protected];RSVP=TRUE:mailto:[email protected] 
ATTENDEE;[email protected];RSVP=TRUE:mailto:[email protected] 
ATTENDEE;[email protected];RSVP=TRUE:mailto:[email protected] 
CLASS:PUBLIC 
CREATED:20140626T005704Z 
DESCRIPTION:When: Thursday\, June 26\, 2014 10:00 AM-10:30 AM (UTC-08:00) P 
    acific Time (US & Canada).\nWhere: Nowhere\n\nNote: The GMT offset above d 
    oes not reflect daylight saving time adjustments.\n\n*~*~*~*~*~*~*~*~*~*\n 
    \nsdcsdascsdcs\n 
DTEND:20140626T173000Z 
DTSTAMP:20140626T005704Z 
DTSTART:20140626T170000Z 
LAST-MODIFIED:20140626T005704Z 
LOCATION:Nowhere 
ORGANIZER;CN="Veer Shubhranshu Shrivastav":mailto:[email protected] 
PRIORITY:5 
SEQUENCE:0 
SUMMARY;LANGUAGE=en-us:Test Meeting 
TRANSP:OPAQUE 
UID:040000008200E00074C5B7101A82E00800000000E02849DF9E90CF01000000000000000 
    010000000D1CC646A48A62440A0D2308D1F4960AA 
X-ALT-DESC;FMTTYPE=text/html:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//E 
    N">\n<HTML>\n<HEAD>\n<META NAME="Generator" CONTENT="MS Exchange Server ve 
    rsion 08.00.0681.000">\n<TITLE></TITLE>\n</HEAD>\n<BODY>\n<!-- Converted f 
    rom text/rtf format -->\n\n<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calib 
    ri">When: Thursday\, June 26\, 2014 10:00 AM-10:30 AM (UTC-08:00) Pacific 
    Time (US &amp\; Canada).</FONT></SPAN></P>\n\n<P DIR=LTR><SPAN LANG="en-us 
    "><FONT FACE="Calibri">Where: Nowhere</FONT></SPAN></P>\n\n<P DIR=LTR><SPA 
    N LANG="en-us"><FONT FACE="Calibri">Note: The GMT offset above does not re 
    flect daylight saving time adjustments.</FONT></SPAN></P>\n\n<P DIR=LTR><S 
    PAN LANG="en-us"><FONT FACE="Calibri">*~*~*~*~*~*~*~*~*~*</FONT></SPAN></P 
    >\n\n<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">sdcsdascsdcs</FONT 
    ></SPAN><SPAN LANG="en-us"></SPAN></P>\n\n</BODY>\n</HTML> 
X-MICROSOFT-CDO-BUSYSTATUS:TENTATIVE 
X-MICROSOFT-CDO-IMPORTANCE:1 
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY 
X-MICROSOFT-DISALLOW-COUNTER:FALSE 
X-MS-OLK-ALLOWEXTERNCHECK:TRUE 
X-MS-OLK-AUTOSTARTCHECK:FALSE 
X-MS-OLK-CONFTYPE:0 
X-MS-OLK-SENDER;CN="Veer Shubhranshu Shrivastav":mailto:[email protected] 
BEGIN:VALARM 
TRIGGER:-PT15M 
ACTION:DISPLAY 
DESCRIPTION:Reminder 
END:VALARM 
END:VEVENT 
END:VCALENDAR 

我無法找出問題出在哪裏。這是我的PHP代碼

<?php 
$domain = 'xyz.com'; 

//Create Email Headers 
$mime_boundary = "----Meeting Booking----".MD5(TIME()); 

$headers = "From: ".$from_name." <".$from_address.">\n"; 
$headers .= "Reply-To: ".$from_name." <".$from_address.">\n"; 
$headers .= "MIME-Version: 1.0\n"; 
$headers .= "Content-Type: multipart/alternative; boundary=\"$mime_boundary\"\n"; 
$headers .= "Content-class: urn:content-classes:calendarmessage\n"; 

//Create Email Body (HTML) 
$message = "--$mime_boundary\r\n"; 
$message .= "Content-Type: text/html; charset=UTF-8\n"; 
$message .= "Content-Transfer-Encoding: 8bit\n\n"; 
$message .= "<html>\n"; 
$message .= "<body>\n"; 
$message .= '<p>Dear '.$to_name.',</p>'; 
$message .= '<p>'.$description.'</p>'; 
$message .= "</body>\n"; 
$message .= "</html>\n"; 
$message .= "--$mime_boundary\r\n"; 

$ical = 
'BEGIN:VCALENDAR' . "\r\n" . 
'PRODID:-//Microsoft Corporation//Outlook 10.0 MIMEDIR//EN' . "\r\n" . 
'VERSION:2.0' . "\r\n" . 
'METHOD:REQUEST' . "\r\n" . 
'X-MS-OLK-FORCEINSPECTOROPEN:TRUE'."\r\n". 
'BEGIN:VEVENT'."\r\n". 
'ATTENDEE;[email protected];RSVP=TRUE:mailto:[email protected]'."\r\n". 
'ATTENDEE;[email protected];RSVP=TRUE:mailto:[email protected]'."\r\n". 
'ATTENDEE;[email protected];RSVP=TRUE:mailto:[email protected]'."\r\n". 
'CLASS:PUBLIC'."\r\n". 
'CREATED:20140626T005704Z'."\r\n". 
'DESCRIPTION:When: Thursday\, June 26\, 2014 10:00 AM-10:30 AM (UTC-08:00) P 
acific Time (US & Canada).\nWhere: Nowhere\n\nNote: The GMT offset above d 
oes not reflect daylight saving time adjustments.\n\n*~*~*~*~*~*~*~*~*~*\n 
\nsdcsdascsdcs\n'."\r\n". 
'DTEND:20140626T173000Z'."\r\n". 
'DTSTAMP:20140626T005704Z'."\r\n". 
'DTSTART:20140626T170000Z'."\r\n". 
'LAST-MODIFIED:20140626T005704Z'."\r\n". 
'LOCATION:Nowhere'."\r\n". 
'ORGANIZER;CN="Veer Shubhranshu Shrivastav":mailto:[email protected]'."\r\n". 
'PRIORITY:5'."\r\n". 
'SEQUENCE:0'."\r\n". 
'SUMMARY;LANGUAGE=en-us:Test Meeting'."\r\n". 
'TRANSP:OPAQUE'."\r\n". 
'UID:040000008200E00074C5B7101A82E00800000000E02849DF9E90CF01000000000000000 
010000000D1CC646A48A62440A0D2308D1F4960AA'."\r\n". 
'X-ALT-DESC;FMTTYPE=text/html:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//E 
N">\n<HTML>\n<HEAD>\n<META NAME="Generator" CONTENT="MS Exchange Server ve 
rsion 08.00.0681.000">\n<TITLE></TITLE>\n</HEAD>\n<BODY>\n<!-- Converted f 
rom text/rtf format -->\n\n<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calib 
ri">When: Thursday\, June 26\, 2014 10:00 AM-10:30 AM (UTC-08:00) Pacific 
Time (US &amp\; Canada).</FONT></SPAN></P>\n\n<P DIR=LTR><SPAN LANG="en-us 
"><FONT FACE="Calibri">Where: Nowhere</FONT></SPAN></P>\n\n<P DIR=LTR><SPA 
N LANG="en-us"><FONT FACE="Calibri">Note: The GMT offset above does not re 
flect daylight saving time adjustments.</FONT></SPAN></P>\n\n<P DIR=LTR><S 
PAN LANG="en-us"><FONT FACE="Calibri">*~*~*~*~*~*~*~*~*~*</FONT></SPAN></P 
>\n\n<P DIR=LTR><SPAN LANG="en-us"><FONT FACE="Calibri">sdcsdascsdcs</FONT 
></SPAN><SPAN LANG="en-us"></SPAN></P>\n\n</BODY>\n</HTML>'."\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-ALLOWEXTERNCHECK:TRUE'."\r\n". 
'X-MS-OLK-AUTOSTARTCHECK:FALSE'."\r\n". 
'X-MS-OLK-CONFTYPE:0'."\r\n". 
'X-MS-OLK-SENDER;CN="Veer Shubhranshu Shrivastav":mailto:[email protected]'."\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"; 
$message .= 'Content-Type: text/calendar;name="veer-invite.ics";method=REQUEST\n'; 
$message .= "Content-Transfer-Encoding: 8bit\n\n"; 
$message .= $ical; 

$mailsent = mail($to_address, $subject, $message, $headers); 
?> 

回答

1

這個問題在this open issue in PHPMailer有一些很好的調查。儘管這不是PHPMailer製作的問題(這是Outlook的錯誤),但在PHPMailer中構建解決方法並不容易 - 您可能更適合使用不同的系統來構建MIME結構,例如Zend_MIME

0

Outlook要求文本/日曆部分必須是唯一的MIME部分。

HTML正文可以設置爲VCALENDAR的一部分。

+0

我所做的是我從Outlook發送郵件邀請,下載了ics文件,閱讀內容但沒有MIME部分。 –

+0

從哪裏下載ICS文件? Outlook不發送ICS文件。你有權訪問整個MIME消息嗎? –

+0

看我會告訴你..我使用上面的PHP代碼發送會議邀請,我正在GMAIL和WebMail中獲取ICS文件,但它不反映在Outlook中。也就是說,我沒有在Outlook中獲得附件。即使我沒有收到Outlook上的會議邀請,因爲我收到了Gmail或Webmail –