2016-04-21 38 views
1

*,PHP-EWS:UploadItem使用PHP的.EML檔案

我想一些.EML檔案每天上傳到我的Exchange Server 2013所以我從谷歌發現,從詹姆斯Iarmes一個PHP類卡列斯PHP -EWS。 https://github.com/jamesiarmes/php-ews

我試了一些例子,我想這個課程對我很好。只有一個問題:在這個wiki中沒有示例代碼,不幸的是我沒搞明白:-(

是否有人與此類一起工作,並且可以發佈一個示例來上傳到Exchange服務器PHP-EWS?

問候

回答

0

我從來沒有使用PHP-EWS的工作,但我不知道,你可以把一個的.eml到Exchange.You不會使用UploadItem操作。我們將使用CreateItem操作,下面是工作流程:

  1. 創建一個電子郵件對象
  2. 使用.eml文件的內容設置MimeContent屬性。
  3. 設置PR_MESSAGE_FLAGS_msgflag_read屬性。
  4. 使用CreateItem操作,或PHP-EWS中客戶端等效的任何操作。

我相當有信心,這將工作,因爲我記得寫在官方documentation這個。

+0

嗨,感謝張貼的方法。我已經發布了一些使用php-ews庫實現這個功能的PHP代碼。我實際上一直想與您聯繫,更新交換Web服務網站上的php-ews文檔,因爲它目前鏈接到的庫沒有維護,也沒有遵循現代實踐。有什麼方法可以與您取得聯繫並進行聊天嗎? –

+0

@GarethParker,當然,你可以在邁克爾·邁納 –

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() 
    ) 
)));