PHP-EWS:使用PHP进行.EML文件的UploadItem

时间:2016-04-21 10:51:16

标签: php exchangewebservices

*,

我想每天将一些.EML文件上传到我的Exchange Server 2013.所以我从Google发现了一个来自James Iarmes的PHP类来调用PHP-EWS。 https://github.com/jamesiarmes/php-ews

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

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

此致

2 个答案:

答案 0 :(得分:2)

根据迈克尔上面给出的答案,我无法告诉你如何在jamesaires/php-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()
    )
)));

答案 1 :(得分:0)

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

  1. 创建电子邮件对象。
  2. 使用.eml文件的内容设置MimeContent属性。
  3. 设置PR_MESSAGE_FLAGS_msgflag_read属性。
  4. 使用CreateItem操作,或者PHP-EWS中客户端等效的任何操作。
  5. 我相信这会有用,因为我记得在官方documentation中写这个。