无法以编程方式保存的Outlook邮件文件

时间:2015-09-04 06:20:00

标签: php outlook exchangewebservices

以下是用于将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 个答案:

答案 0 :(得分:1)

MSG文件是二进制文件(在MSG格式的情况下为IStorage)文件。这不是你从EWS得到的。

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

相关问题