2011-06-15 150 views
1

我有一個頁面,管理員爲委員會創建活動,日曆通知發送給給定委員會的所有成員。閱讀outlook預約回覆與PHP

我希望能夠做的是以某種方式檢索答覆,無論是接受,暫定還是拒絕,並顯示響應列表以及事件信息。

事件創建者將被設置爲使用電子郵件地址,其唯一目的是創建事件。

我能夠連接到收件箱和閱讀電子郵件,我可以讀出初始事件創作就好了,就像它的ICS文件,但是當我嘗試讀取從別人我得到的迴應是垃圾:

--_000_D3E7EC0B6389944E84089DB2A556B79F01214822CACALOIS_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SnVzdCBpbiBjYXNlIHlvdSBuZWVkIHRvIHNlZSBhIHJlc3BvbnNlLg0KDQo --_000_D3E7EC0B6389944E84089DB2A556B79F01214822CACALOIS_ Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 PGh0bWw+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxtZXRhIG5hbWU9IkdlbmVyYXRvciIgY29udGVu dD0iTWljcm9zb2Z0IEV4Y2hhbmdlIFNlcnZlciI+DQo8IS0tIGNvbnZlcnRlZCBmcm9tIHJ0ZiAt LT4NCjxzdHlsZT48IS0tIC5FbWFpbFF1b3RlIHsgbWFyZ2luLWxlZnQ6IDFwdDsgcGFkZGluZy1s ZWZ0OiA0cHQ7IGJvcmRlci1sZWZ0OiAjODAwMDAwIDJweCBzb2xpZDsgfSAtLT48L3N0eWxlPg0K PC9oZWFkPg0KPGJvZHk+DQo8Zm9udCBmYWNlPSJDYWxpYnJpLCBzYW5zLXNlcmlmIiBzaXplPSIy Ij4NCjxkaXY+SnVzdCBpbiBjYXNlIHlvdSBuZWVkIHRvIHNlZSBhIHJlc3BvbnNlLjwvZGl2Pg0K PGRpdj4mbmJzcDs8L2Rpdj4NCjwvZm9udD4NCjwvYm9keT4NCjwvaHRtbD4NCg== --_000_D3E7EC0B6389944E84089DB2A556B79F01214822CACALOIS_ Content-Type: text/calendar; charset="utf-8"; method=REPLY Content-Transfer-Encoding: base64 QkVHSU46VkNBTEVOREFSDQpNRVRIT0Q6UkVQTFkNClBST0RJRDpNaWNyb3NvZnQgRXhjaGFuZ2Ug U2VydmVyIDIwMDcNClZFUlNJT046Mi4wDQpCRUdJTjpWVElNRVpPTkUNClRaSUQ6Q2VudHJhbCBT dGFuZGFyZCBUaW1lDQpCRUdJTjpTVEFOREFSRA0KRFRTVEFSVDoxNjAxMDEwMVQwMjAwMDANClRa T0ZGU0VURlJPTTotMDUwMA0KVFpPRkZTRVRUTzotMDYwMA0KUlJVTEU6RlJFUT1ZRUFSTFk7SU5U RVJWQUw9MTtCWURBWT0xU1U7QllNT05USD0xMQ0KRU5EOlNUQU5EQVJEDQpCRUdJTjpEQVlMSUdI VA0KRFRTVEFSVDoxNjAxMDEwMVQwMjAwMDANClRaT0ZGU0VURlJPTTotMDYwMA0KVFpPRkZTRVRU TzotMDUwMA0KUlJVTEU6RlJFUT1ZRUFSTFk7SU5URVJWQUw9MTtCWURBWT0yU1U7QllNT05USD0z DQpFTkQ6REFZTElHSFQNCkVORDpWVElNRVpPTkUNCkJFR0lOOlZFVkVOVA0KT1JHQU5JWkVSO0NO PVJ5YW4gTGVpc2luZzpNQUlMVE86cmxlaXNpbmdAbWl0Y2hlbGx3YXluZS5jb20NCkFUVEVOREVF O1BBUlRTVEFUPUFDQ0VQVEVEO0NOPUtlbGxpIEdldHRpbmdlcjpNQUlMVE86a2VsbGlAbWl0Y2hl bGx3YXluZS5jbw0KIG0NCkNPTU1FTlQ7TEFOR1VBR0U9ZW4tVVM6SnVzdCBpbiBjYXNlIHlvdSBu ZWVkIHRvIHNlZSBhIHJlc3BvbnNlLlxuXG4NClNVTU1BUlk7TEFOR1VBR0U9ZW4tVVM6QWNjZXB0 ZWQ6IHRlc3RpbmcNCkRUU1RBUlQ7VFpJRD1DZW50cmFsIFN0YW5kYXJkIFRpbWU6MjAxMTA2MTVU MTUzMDAwDQpEVEVORDtUWklEPUNlbnRyYWwgU3RhbmRhcmQgVGltZToyMDExMDYxNVQxNjAwMDAN ClVJRDowNDAwMDAwMDgyMDBFMDAwNzRDNUI3MTAxQTgyRTAwODAwMDAwMDAwMjBFNkFFN0Y2RDJC Q0MwMTAwMDAwMDAwMDAwMDAwMA0KIDAxMDAwMDAwMDBCRDdCRDdDNDlDMjIyNDg4QTZFMTE3OTc4 QzdDNUQyDQpDTEFTUzpQVUJMSUMNClBSSU9SSVRZOjUNCkRUU1RBTVA6MjAxMTA2MTVUMjAwNDM3 Wg0KVFJBTlNQOk9QQVFVRQ0KU1RBVFVTOkNPTkZJUk1FRA0KU0VRVUVOQ0U6MA0KTE9DQVRJT047 TEFOR1VBR0U9ZW4tVVM6TVdUDQpYLU1JQ1JPU09GVC1DRE8tQVBQVC1TRVFVRU5DRTowDQpYLU1J Q1JPU09GVC1DRE8tT1dORVJBUFBUSUQ6LTExOTAxNzI3MDkNClgtTUlDUk9TT0ZULUNETy1CVVNZ U1RBVFVTOkJVU1kNClgtTUlDUk9TT0ZULUNETy1JTlRFTkRFRFNUQVRVUzpCVVNZDQpYLU1JQ1JP U09GVC1DRE8tQUxMREFZRVZFTlQ6RkFMU0UNClgtTUlDUk9TT0ZULUNETy1JTVBPUlRBTkNFOjEN ClgtTUlDUk9TT0ZULUNETy1JTlNUVFlQRTowDQpFTkQ6VkVWRU5UDQpFTkQ6VkNBTEVOREFSDQo --_000_D3E7EC0B6389944E84089DB2A556B79F01214822CACALOIS_--

以下是我如何創建和發送通知。

$vcal = "BEGIN:VCALENDAR\r\n"; 
$vcal .= "PRODID:-//CompanyName//ProductName//EN\r\n"; 
$vcal .= "VERSION:2.0\r\n"; 
$vcal .= "METHOD:REQUEST\r\n"; 
$vcal .= "BEGIN:VEVENT\r\n"; 
foreach($comstmt->fetchAll(PDO::FETCH_ASSOC) as $commem){ 
    $vcal .= "ATTENDEE;CN=\"".$commem['first']." ".$commem['last']."\";ROLE=REQ-PARTICIPANT;RSVP=TRUE:MAILTO:".$commem['email']."\r\n"; 
} 
$vcal .= "ATTENDEE;CN=\"Ryan Leising\";ROLE=REQ-PARTICIPANT;RSVP=TRUE:MAILTO:[email protected]\r\n"; 
$vcal .= "DESCRIPTION:".$_POST['event_description']."\r\n"; 
$vcal .= "DTEND:$dtend\r\n"; 
$vcal .= "DTSTAMP:".date('Ymd').'T'.date('His')."\r\n"; 
$vcal .= "DTSTART:$dtstart\r\n"; 
$vcal .= "LOCATION:".$_POST['event_location']."\r\n"; 
$vcal .= "SUMMARY:".$comname." event\r\n"; 
$vcal .= "UID:".date('Ymd').'T'.date('His')."-".rand()."-domain.com\r\n"; 
$vcal .= "BEGIN:VALARM\r\n"; 
$vcal .= "TRIGGER:-PT15M\r\n"; 
$vcal .= "ACTION:DISPLAY\r\n"; 
$vcal .= "END:VALARM\r\n"; 
$vcal .= "END:VEVENT\r\n"; 
$vcal .= "END:VCALENDAR\r\n"; 
$headers = "From: [email protected]\r\nReply-To: [email protected]"; 
$headers .= "\r\nMIME-version: 1.0\r\nContent-Type: text/calendar; method=REQUEST; charset=\"iso-8859-1\""; 
$headers .= "\r\nContent-Transfer-Encoding: 7bit\r\nX-Mailer: Microsoft Office Outlook 12.0"; 
$mailsent = mail($to, $comname." event", $vcal, $headers); 

回答

1

PHP IMAP開頭,選中新郵件框,然後選擇要分析的郵件。除此之外,您需要識別Outlook回覆消息的結構,並開始解析出所需的信息。 preg_match()將成爲您的朋友在那裏提取文本,但沒有看到消息的示例,我們將無法提供更多幫助。

如果imap_fetchbody()不夠用,mailparse庫將幫助解構MIME消息,如果簡單地檢索消息體。

+0

我已連接到收件箱,但現在我無法解析響應。問題已更新。 – Ryan 2011-06-16 16:44:32

+0

@Ryan您將需要使用mailparse將消息拆分爲其部分。你添加到你的問題的部分是base64編碼。我不知道在分離部件後,mailparse是否會自動將它們解碼,但如果不是,那麼只需'base64_decode()'每一部分就可以得到文本。 – 2011-06-16 17:17:38

+0

@Ryan請參閱http://www.php.net/manual/en/function.mailparse-msg-extract-part.php瞭解message_extract_part()函數。 – 2011-06-16 17:23:08