PHP-EWS: UploadItem using PHP for .EML-Files


PHP-EWS: UploadItem using PHP for .EML-Files

*,

我想每天上传一些.EML 文件到我的 Exchange Server 2013。所以我从谷歌上找到了James Iames的一个PHP类,叫做PHP-EWS。https://github.com/jamesiarmes/php-ews

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

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

问候

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

<?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,但我知道您可以将 .eml 放入 Exchange。您将使用创建项操作。以下是工作流:

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

我相当有信心这将起作用,因为我记得在官方文档中写过这个。