PHP-EWS:UploadItem使用PHP for.EML文件

PHP-EWS:UploadItem使用PHP for.EML文件,php,exchangewebservices,Php,Exchangewebservices,*, 我想每天将一些.EML文件上载到我的Exchange Server 2013。所以我在Google上找到了一个来自James Iarmes的PHP类,叫做PHP-EWS。 我尝试了一些例子,我认为,这门课对我很好。只有一个问题:在这个wiki中没有示例代码,不幸的是我没有得到它:-( 是否有人使用这个类并可以发布一个示例,使用PHP-EWS上传到Exchange服务器 关于我从未使用过PHP-EWS,但我知道您可以将.eml放入Exchange。您不会使用UploadItem操作。您将使

*,

我想每天将一些.EML文件上载到我的Exchange Server 2013。所以我在Google上找到了一个来自James Iarmes的PHP类,叫做PHP-EWS。

我尝试了一些例子,我认为,这门课对我很好。只有一个问题:在这个wiki中没有示例代码,不幸的是我没有得到它:-(

是否有人使用这个类并可以发布一个示例,使用PHP-EWS上传到Exchange服务器


关于

我从未使用过PHP-EWS,但我知道您可以将.eml放入Exchange。您不会使用UploadItem操作。您将使用CreateItem操作。以下是工作流:

  • 创建电子邮件对象
  • 使用.eml文件的内容设置MimeContent属性
  • 设置PR_MESSAGE_FLAGS_msgflag_read属性
  • 使用CreateItem操作,或者PHP-EWS中的任何客户端等效操作

  • 我很有信心这会起作用,因为我记得我在官方网站上写过这篇文章。

    根据上面Michael up给出的答案,我无法告诉你在
    jamesaires/php-ews中如何做到这一点,但我可以告诉你在我的ews库中如何做到这一点。我强烈建议你查看我的库,因为它是维护的,并且是PSR-4兼容。以下是使用Michael方法的方法

    <?php
    
    require_once "vendor/autoload.php";
    
    use jamesiarmes\PEWS\API\Type;
    use jamesiarmes\PEWS\Mail\MailAPI;
    
    $api = MailApi::withUsernameAndPassword('server', 'username', 'password');
    
    $message = new Type\MessageType();
    $message->setMimeContent(file_get_contents('./file.eml'));
    
    //Set the message as not a draft using extended property types
    $extended = new Type\ExtendedPropertyType();
    $fieldUri = new Type\ExtendedFieldURI();
    $fieldUri->setPropertyTag("0x0E07");
    $fieldUri->setPropertyType(\jamesiarmes\PEWS\API\Enumeration\MapiPropertyTypeType::INTEGER);
    $extended->setExtendedFieldURI($fieldUri);
    $extended->setValue(1);
    $message->addExtendedProperty($extended);
    
    //Pass it to the Send Mail function, but to SaveOnly without actually sending the email
    $itemId = $api->sendMail($message, array('MessageDisposition' => 'SaveOnly'));
    
    $inbox = $api->getFolderByDistinguishedId('inbox');
    
    //Move the mail message from the sent folder to whatever folder we want to send it to
    $api->getClient()->MoveItem(Type::buildFromArray(array(
        'ToFolderId' => array('FolderId' => $inbox->getFolderId()->toArray()),
        'ItemIds' => array(
            'ItemId' => $itemId->toArray()
        )
    )));
    

    您好,感谢您发布此方法。我已经发布了一些使用PHP ews库实现此功能的PHP代码。实际上,我一直想与您联系,更新exchange web服务网站上的PHP ews文档,因为它当前链接到的库没有维护,也没有遵循现代做法。有吗有什么办法能让我和你联系聊聊吗?@GarethParker,当然,你可以在MichaelMainer的Twitter上给我发DM