2

私の目標は、メッセージ パラメーター (from、to、body、subject など) を受け取り、.eml ファイルを作成することです。

現在、EWS マネージ API を使用して (他の提案も受け付けています)、EmailMessage オブジェクトを作成しています。メッセージをメールボックスに保存したり送信したりする代わりに (セキュリティ ポリシーにより、使用しているアプリケーションのアカウントがメールボックスにアクセスできないため、これは不可能です)、.eml ファイルを作成したいと考えています。

有望に見える別の回答から見つけたいくつかのコードを適応させました:

EmailMessage message = new EmailMessage(service);

//message initialization code
//...

using (FileStream fs = File.Open(@"message.eml", FileMode.Create, FileAccess.Write))  
{
    message.Load(new PropertySet(ItemSchema.MimeContent));
    var mc = message.MimeContent;
    fs.Write(mc.Content, 0, mc.Content.Length);
}

しかし、message.Load() で「このサービス オブジェクトには ID がないため、この操作を実行できません」という例外が発生します。少しデバッグすると、基本的に message.Id が null であることがわかります。Id にはセッターがありません。これは、メッセージがフォルダーに保存されるまで ID を取得できないためだと思いますが、これはできません。

これを回避する方法はありますか?

ありがとう

4

1 に答える 1

1

EmailMessage クラスには、MIME パーサー/ライターがありません。MimeContent はサーバーによって作成されます。回避策は、独自のパーサーを作成して、EmailMessage オブジェクトに設定されたプロパティを解析することです。サーバーに保存しないのに、なぜ EmailMessage クラスを使用するのでしょうか?

于 2014-03-14T18:26:16.337 に答える