電子書籍の厳選無料作品が豊富!

Outlook Expressの受信トレイにあるメールから
MSMAPI経由でメールの内容を取得するプログラムを作っています。

困っているのはmapiMess.RecipAddressを使って取得できる
アドレスについてで、メールのヘッダ情報が以下のような場合…

Reply-To: aaaa@a.co.jp, bbbb@b.co.jp

mapiMess.RecipAddressで取得すると"aaaa@a.co.jp"が取得されます。
ですが、bbbb@b.co.jpの方を取得したいのです。

一方、ヘッダ情報が以下のような形式の場合

Reply-To: aaaa@a.co.jp, bbbb@b.co.jp
To: bbbb@b.co.jp

きちんと"bbbb@b.co.jp"が取得できます。

ヘッダ情報をPG側で分解して…とも思ったのですが、そもそも取得できるのでしょうか?
もしくは、上記説明でいう"bbbb@b.co.jp"の方を取得できる方法はあるのでしょうか?
もしお分かりの方がいらっしゃればご教授願います。


環境:WinXp(SP3)、VB2005+MSMAPI

A 回答 (2件)

 .NET の方の System.Net.Mail の MailMessage クラスには、そのものずばり ReplyTo プロパティがあるのですが、これもアドレスを一つしか返さない仕様になっています。


 それでもしやと思って RFC を見たところ、Reply-To にはアドレスをひとつまでしか書けないことが分かりました。つまり、Reply-To に二つ以上のアドレスが書かれているメールは規格違反、ということになってしまいます。
 規格違反のメールメッセージであっても処理できる出来合いのライブラリを探すのは、難しいかも知れません。

この回答への補足

ありがとうございます。

なるほど…
備わっている機能では厳しいのですね(´A`;)

うーん…
ヘッダ情報をゴソッと持ってこられるような方法があれば、
そこのところを自前で作ることもできるんですけどねぇ…。

補足日時:2009/12/29 19:44
    • good
    • 0

 MSDN Library に RecipIndex で RecipAddress が返すアドレスを指定できる、とあります。


# 少し気になるのは、Reply-To のアドレスが RecipAddress に入るのかな、という点です。Reply-To は返信先なので受信者とは概念上異なるので。

参考URL:http://msdn.microsoft.com/en-us/library/aa228553 …

この回答への補足

回答ありがとうございます。
実はこれも試してみたんですが、

For i As Integer = 0 To mapiMess.RecipCount - 1
mapiMess.RecipIndex = i
strMailAdr = mapiMess.RecipAddress
  ※ここで取得したアドレスが"aaaa"じゃなければ…的な判定と処理
Next
(略)

これですと
Reply-To: aのアドレス、bのアドレス(コレを取得したい)
To: bのアドレス
と「To:」の記述がある場合を除き、aのアドレスが取得されてしまいます。

メールのヘッダを調べてみても、取得したいメールアドレスが
「Reply-To」の部分にしか記述されていないのです。
なので、"送信元を求めている"というよりは、
"Reply-Toにあるアドレスを取得する"という表現の方が正しかったかもしれません。
すみません(;´Д`A

補足日時:2009/12/27 04:57
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!