无法打开以编程方式保存的 Outlook 邮件文件
Can't open programmatically saved Outlook message file
这是我用于将 Outlook 邮件保存到邮件文件的代码。
<?php
define("FILE_PUT_CONTENTS_ATOMIC_MODE", 0777);
/*function __autoload($class_name) {
$base_path = 'php-ews-master';
$include_file = $base_path . '/' . str_replace('_', '/', $class_name) . '.php';
return (file_exists($include_file) ? require_once $include_file : false);
}
*/
function __autoload($class_name)
{
// Start from the base path and determine the location from the class name,
$base_path = '.';
$include_file = $base_path . '/' . str_replace('_', '/', $class_name) . '.php';
return (file_exists($include_file) ? require_once $include_file : false);
}
/*
** Adjust these variables before running the script!
*/
$server = 'xxx';
$username = 'xx';
$password = 'xx' ;
$message_id = 'xx';
$save_dir = __DIR__;
$ews = new ExchangeWebServices($server, $username, $password,ExchangeWebServices::VERSION_2007_SP1);
//print_r($ews);
$request = new EWSType_GetItemType();
$request->ItemShape = new EWSType_ItemResponseShapeType();
$request->ItemShape->BaseShape = EWSType_DefaultShapeNamesType::ALL_PROPERTIES;
$request->ItemShape->IncludeMimeContent = true;
//$request->ItemShape->FilterHtmlContent = true;
$request->ItemIds = new EWSType_NonEmptyArrayOfBaseItemIdsType();
$request->ItemIds->ItemId = new EWSType_ItemIdType();
$request->ItemIds->ItemId->Id = $message_id;
$response = $ews->GetItem($request);
if (($response->ResponseMessages->GetItemResponseMessage->ResponseCode == 'NoError') &&
($response->ResponseMessages->GetItemResponseMessage->ResponseClass == 'Success')) {
file_put_contents($save_dir."/test.msg", base64_decode($response->ResponseMessages->GetItemResponseMessage->Items->Message->MimeContent->_));
}
?>
当我打开文件时,它收到错误消息,注意到创建的消息文件存在文件权限错误。
MSG 文件是二进制文件(如果是 MSG 格式则为 IStorage)文件。这不是您从 EWS 获得的。
你试过用记事本打开文件吗?
这是我用于将 Outlook 邮件保存到邮件文件的代码。
<?php
define("FILE_PUT_CONTENTS_ATOMIC_MODE", 0777);
/*function __autoload($class_name) {
$base_path = 'php-ews-master';
$include_file = $base_path . '/' . str_replace('_', '/', $class_name) . '.php';
return (file_exists($include_file) ? require_once $include_file : false);
}
*/
function __autoload($class_name)
{
// Start from the base path and determine the location from the class name,
$base_path = '.';
$include_file = $base_path . '/' . str_replace('_', '/', $class_name) . '.php';
return (file_exists($include_file) ? require_once $include_file : false);
}
/*
** Adjust these variables before running the script!
*/
$server = 'xxx';
$username = 'xx';
$password = 'xx' ;
$message_id = 'xx';
$save_dir = __DIR__;
$ews = new ExchangeWebServices($server, $username, $password,ExchangeWebServices::VERSION_2007_SP1);
//print_r($ews);
$request = new EWSType_GetItemType();
$request->ItemShape = new EWSType_ItemResponseShapeType();
$request->ItemShape->BaseShape = EWSType_DefaultShapeNamesType::ALL_PROPERTIES;
$request->ItemShape->IncludeMimeContent = true;
//$request->ItemShape->FilterHtmlContent = true;
$request->ItemIds = new EWSType_NonEmptyArrayOfBaseItemIdsType();
$request->ItemIds->ItemId = new EWSType_ItemIdType();
$request->ItemIds->ItemId->Id = $message_id;
$response = $ews->GetItem($request);
if (($response->ResponseMessages->GetItemResponseMessage->ResponseCode == 'NoError') &&
($response->ResponseMessages->GetItemResponseMessage->ResponseClass == 'Success')) {
file_put_contents($save_dir."/test.msg", base64_decode($response->ResponseMessages->GetItemResponseMessage->Items->Message->MimeContent->_));
}
?>
当我打开文件时,它收到错误消息,注意到创建的消息文件存在文件权限错误。
MSG 文件是二进制文件(如果是 MSG 格式则为 IStorage)文件。这不是您从 EWS 获得的。
你试过用记事本打开文件吗?