exchangewebservices — PHP-EWS: UploadItem, использующий PHP для .EML-файлов

*,

Я хочу ежедневно загружать некоторые .EML-файлы на свой Exchange Server 2013. Поэтому я нашел в Google класс PHP от James Iarmes, называющий PHP-EWS.
https://github.com/jamesiarmes/php-ews

Я попробовал несколько примеров, и я думаю, что этот класс хорош для меня. Есть только одна проблема: в этом вики нет примера кода, и, к сожалению, я его не вывожу 🙁

Есть ли кто-то, кто работает с этим классом и может опубликовать пример для загрузки на серверы Exchange с использованием PHP-EWS?

С уважением

1

Решение

Исходя из ответа, данного Майклом выше, я не могу сказать вам, как бы вы это сделали в 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()
)
)));
2

Другие решения

Я никогда не работал с PHP-EWS, но знаю, что вы можете поместить .eml в Exchange. Вы не будете использовать операцию UploadItem. Вы будете использовать операцию CreateItem. Вот рабочий процесс:

  1. Создайте объект электронной почты.
  2. Установите свойство MimeContent с содержимым вашего файла .eml.
  3. Установите свойство PR_MESSAGE_FLAGS_msgflag_read.
  4. Используйте операцию CreateItem или любой другой аналог на стороне клиента в PHP-EWS.

Я довольно уверен, что это будет работать, так как я помню, как писал это в официальном документация.

0

По вопросам рекламы [email protected]