【问题标题】:PHP-EWS: UploadItem using PHP for .EML-FilesPHP-EWS:UploadItem 使用 PHP 处理 .EML 文件
【发布时间】:2016-04-21 10:51:15
【问题描述】:

*,

我想每天将一些 .EML 文件上传到我的 Exchange Server 2013。所以我从 Google 找到了 James Iarmes 的一个 PHP 类,称为 PHP-EWS。 https://github.com/jamesiarmes/php-ews

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

是否有人使用该类并可以发布示例以使用 PHP-EWS 上传到 Exchange-Servers?

问候

【问题讨论】:

    标签: php exchangewebservices


    【解决方案1】:

    根据上面 Michael 给出的答案,我无法在 jamesaires/php-ews 中告诉您如何操作,但我可以在我的 ews 库 garethp/php-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()
        )
    )));
    

    【讨论】:

      【解决方案2】:

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

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

      我相当有信心这会奏效,因为我记得在官方documentation 中写过这篇文章。

      【讨论】:

      • 您好,感谢您发布该方法。我已经发布了一些 PHP 代码,用于使用 php-ews 库来实现这一点。实际上,我一直想与您联系以更新交换 Web 服务网站上的 php-ews 文档,因为它当前链接到的库未维护并且不遵循现代实践。有什么办法可以联系到你聊聊吗?
      • @GarethParker,当然,您可以在 Twitter 上的 MichaelMainer 上私信我
      猜你喜欢
      • 2010-09-30
      • 1970-01-01
      • 2015-11-09
      • 1970-01-01
      • 2017-10-05
      • 2012-01-14
      • 2014-05-23
      • 1970-01-01
      • 2012-07-09
      相关资源
      最近更新 更多