2015-09-04 79 views
0

这是我用于将Outlook邮件保存到邮件文件的代码。无法打开以编程方式保存的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->_)); 

    } 

    ?> 

当我打开文件时,它会在创建的消息文件中注意到文件权限错误时收到错误消息。

请帮我解决这个问题。

回答

1

MSG文件是一个二进制文件(如果是MSG格式,则为IStorage)。这不是你从EWS得到的。

您是否试图在记事本中打开该文件?

+0

@damitry 有没有办法将MSG文件创建为EWS的二进制文件? – sanji

+1

我不相信。 –

+0

手动保存的文件保存为应用程序/ CDFV2损坏类型。有什么办法可以保存该类型的.msg文件吗? – sanji

相关问题