2

メール アイテムを eml 形式で保存できる Exchange Web サービス用の Web インターフェイスを開発しています。PHP-EWS ( https://github.com/jamesiarmes/php-ews ) を使用して、Exchange Server への接続を確立します。

私はそのようなファイルがどのように見えるかを知っているので、メール アイテムをダウンロードして、データを使用して eml テンプレートを生成することができました。

しかし、私はこの投稿を見つけました: Save mail to msg file using EWS API . Colin は、メール アイテムを eml ファイルに直接エクスポートするメカニズムについて話します。PHPでもそれは可能ですか?

さらに、別のことを見つけました: https://github.com/jamesiarmes/php-ews/wiki/Email:-Set-Extended-MAPI-Properties。この例では、誰かが MIME コンテンツを生成し、それを新しいアイテムに設定します。既存のアイテムの MIME タイプ (eml ファイルのように見えます) を取得することはできますか?

助けてくれてありがとう!

4

1 に答える 1

2

メール アイテムを eml 形式で保存するには、 GetItem操作のItemShape要素でIncludeMimeContentプロパティをtrueに設定する必要があります。 そうすることで、GetItem 応答MimeContent 要素を取得します。

MimeContent 要素には、base64Binary 形式で表されるオブジェクトのネイティブ MIME (Multipurpose Internet Mail Extensions) ストリームが含まれています。

例として、次のコードを考えてみましょう。

<?php

function __autoload($class_name) {
    $base_path = 'php-ews-master';
    $include_file = $base_path . '/' . str_replace('_', '/', $class_name) . '.php';
    return (file_exists($include_file) ? require_once $include_file : false);
}

/*
**  Adjust these variables before running the script!
*/
$server     = 'your_server';
$username   = 'your_user';
$password   = 'your_password';
$message_id = 'your_message_id';

$ews = new ExchangeWebServices($server, $username, $password);
//print_r($ews);

$request = new EWSType_GetItemType();

$request->ItemShape = new EWSType_ItemResponseShapeType();
$request->ItemShape->BaseShape = EWSType_DefaultShapeNamesType::ALL_PROPERTIES;
$request->ItemShape->IncludeMimeContent = true;

$request->ItemIds = new EWSType_NonEmptyArrayOfBaseItemIdsType();
$request->ItemIds->ItemId = new EWSType_ItemIdType();
$request->ItemIds->ItemId->Id = $message_id; 

$response = $ews->GetItem($request);
//echo '<pre>'.print_r($response, true).'</pre>';

if (($response->ResponseMessages->GetItemResponseMessage->ResponseCode == 'NoError') &&
    ($response->ResponseMessages->GetItemResponseMessage->ResponseClass == 'Success')) {
    file_put_contents("test.eml", base64_decode($response->ResponseMessages->GetItemResponseMessage->Items->Message->MimeContent->_));
}

?>
于 2013-09-18T20:45:05.347 に答える