dsi36131 2016-09-22 11:18
浏览 107

想要从EWS邮件的输出中获取变量值

i am taking the unread mail using EWS from Exchange server. below is the output.

stdClass Object ( [ResponseMessages] => stdClass Object 
            ( [FindItemResponseMessage] => stdClass Object 
    ( [ResponseCode] => NoError 
      [ResponseClass] => Success 
      [RootFolder] => stdClass Object 
    ( [Items] => stdClass Object 
    ( [Message] => stdClass Object 
    ( [ItemId] => stdClass Object 
    ( [Id] => AAMkADllYWVjYjE3LWMzNWItNDczYy05YzllLWEzMzM2YWUzNDY3NQBGAAAAAAA3RNrc1+NeRYdPKpmLrF8OBwDmmObTCfhpSqYuvnMiDlrXAAAAFjg7AADmmObTCfhpSqYuvnMiDlrXAAD0o9sFAAA= 
      [ChangeKey] => CQAAABYAAADmmObTCfhpSqYuvnMiDlrXAAD0o+gX 
    ) 
      [Subject] => CR-1167-Approved
      [Sensitivity] => Normal 
      [Size] => 2992 
      [DateTimeSent] => 2016-09-22T10:55:12Z 
      [DateTimeCreated] => 2016-09-22T10:55:13Z 
      [HasAttachments] => [IsAssociated] => [From] => stdClass Object 
      ( [Mailbox] => stdClass Object 
      ( [Name] => Basudev Kumar Sadhu (Assistant Manager, Technology)
        [MailboxType] => OneOff
       ) 
       ) 
         [IsRead] => 
       ) ) 
         [IndexedPagingOffset] => 1
       [IncludesLastItemInRange] => 1 
       [TotalItemsInView] => 1 
       ) ) ) )

Now i want to parse a value from this output. i want to capture Subject and Name from this output.

Below is my original code that i used to read the mail.

<?php
require_once ('../mail3/php-ews-master/ExchangeWebServices.php');
require_once ('../mail3/php-ews-master/EWS_Exception.php');
require_once ('../mail3/php-ews-master/EWSType.php');
require_once ('../mail3/php-ews-master/NTLMSoapClient.php');

 function __autoload($class_name)
 {
 // Start from the base path and determine the location from the class name,
 $base_path = '../mail3/php-ews-master';
 $include_file = $base_path . '/' . str_replace('_', '/', $class_name) . '.php';

return (file_exists($include_file) ? require_once $include_file : false);
}

 //$message_id = ''; // Id of the email message
 $ews = new ExchangeWebServices("webmail.bkash.com", "cr.tool", "BanglaDesh!@34",ExchangeWebServices::VERSION_2010);


$request = new EWSType_FindItemType();
$itemProperties = new EWSType_ItemResponseShapeType();
$itemProperties->BaseShape = EWSType_DefaultShapeNamesType::DEFAULT_PROPERTIES;
$itemProperties->BodyType = EWSType_BodyTypeResponseType::TEXT;
$request->ItemShape = $itemProperties;

$fieldType = new EWSType_PathToUnindexedFieldType();
$fieldType->FieldURI = 'message:IsRead';

$constant = new EWSType_FieldURIOrConstantType();
$constant->Constant = new EWSType_ConstantValueType();
$constant->Constant->Value = "0";

$IsEqTo = new EWSType_IsEqualToType();
$IsEqTo->FieldURIOrConstant = $constant;
$IsEqTo->Path = $fieldType;

$request->Restriction = new EWSType_RestrictionType();
$request->Restriction->IsEqualTo = new EWSType_IsEqualToType();
$request->Restriction->IsEqualTo->FieldURI = $fieldType;
$request->Restriction->IsEqualTo->FieldURIOrConstant = $constant;

$request->IndexedPageItemView = new EWSType_IndexedPageViewType();
$request->IndexedPageItemView->BasePoint = 'Beginning';
$request->IndexedPageItemView->Offset = 0;

$request->ParentFolderIds = new EWSType_NonEmptyArrayOfBaseFolderIdsType();
$request->ParentFolderIds->DistinguishedFolderId = new EWSType_DistinguishedFolderIdType();
$request->ParentFolderIds->DistinguishedFolderId->Id = EWSType_DistinguishedFolderIdNameType::INBOX;

$request->Traversal = EWSType_ItemQueryTraversalType::SHALLOW;

$result = new EWSType_FindItemResponseMessageType();
$result = $ews->FindItem($request);

if ($result->ResponseMessages->FindItemResponseMessage->ResponseCode == 'NoError' && $result->ResponseMessages->FindItemResponseMessage->ResponseClass == 'Success'){

$count = $result->ResponseMessages->FindItemResponseMessage->RootFolder->TotalItemsInView;

if($count > 0) {
    echo $count . " email(s)";
    print_r($result);

} else {
    echo 'No email(s)';
}

}

?>
  • 写回答

1条回答 默认 最新

  • dousilie9522 2016-09-30 09:17
    关注

    I would suggest using my version of that library garethp/php-ews, which comes with many examples, including how to get a list of mail items.

    Working on that, your code would look roughly like

    <?php
    
    require_once "vendor/autoload.php";
    
    use garethp\ews\API\Type;
    use garethp\ews\MailAPI;
    
    $api = MailAPI::withUsernameAndPassword('server', 'username', 'password');
    $mail = $api->getMailItems();
    
    foreach ($mail as $mailItem) {
        $mailItem = $api->getItem($mail->getItemId());
        $subject = $mailItem->getSubject();
        $body = (string) $mailItem->getBody();
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 有人能看一下我宿舍管理系统的报修功能该怎么改啊?链表那里总是越界
  • ¥15 cs loadimage运行不了,easyx也下了,没有用
  • ¥15 r包runway详细安装教程
  • ¥15 Html中读取Json文件中数据并制作表格
  • ¥15 谁有RH342练习环境
  • ¥15 STM32F407 DMA中断问题
  • ¥15 uniapp连接阿里云无法发布消息和订阅
  • ¥25 麦当劳点餐系统代码纠错
  • ¥15 轮班监督委员会问题。
  • ¥20 关于变压器的具体案例分析