- ベストアンサー
【OutlookExpress】メールアドレスを抽出したい。
こんにちは OutlookExpressで受信したメールの本文(オーダーフォーム)からメールアドレスの部分を 抽出したいのですが可能でしょうか。 また、受信したメールの「送信者」のアドレスを抽出することは可能でしょうか。 それぞれ数百通有るので途方に暮れています。 良い方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 OutlookExpressでお望みの作業を実施する方法はおもいつきませんが、Outlookでなら方法はあります。 まず、Outlookに対象メールをエクスポートします。 (メニューの"ファイル"->"エクスポート"で出来ます) Outlookで以下のマクロを作成します。 Public Sub getSenderMailAddress() Dim personalFolder As MAPIFolder Dim appNameSpace As NameSpace Dim i As Integer Dim dic As Object Dim varItem As Variant 'ディクショナリの作成 Set dic = CreateObject("Scripting.Dictionary") Call dic.RemoveAll 'ルートフォルダの取得 Set appNameSpace = Application.GetNamespace("MAPI") Set personalFolder = appNameSpace.Folders.Item(1) doResearch personalFolder, dic '保存ファイルのオープン Open "保存ファイルのパス\保存ファイル名" For Output As #1 '取得したデータ(送信者アドレス、メール本文)の件数分ループ For Each varItem In dic 'Emptyのチェック If Not varItem = Empty Then '取得データの出力 Print #1, varItem End If Next 'ファイルクローズ Close #1 End Sub ------------------------------------------------- Private Sub doResearch(ByRef parentFolder As MAPIFolder, ByRef dic As Object) Dim childFolder As MAPIFolder Dim curMail As mailItem Dim mailCount As Integer Dim folderCount As Integer 'ルートフォルダ配下のフォルダ件数分ループ For folderCount = 1 To parentFolder.Folders.Count 'フォルダ一覧からfolderCount件目のフォルダを取得 Set childFolder = parentFolder.Folders.Item(folderCount) '現在のフォルダに存在するメールの件数分ループ For mailCount = 1 To childFolder.Items.Count '現在のフォルダのmailCount件目のメールのタイプをチェック '普通のメールの場合はMailItemだが、開封通知などはMailItemでは無いため 'のチェック。 If TypeOf childFolder.Items.Item(mailCount) Is mailItem Then '現在のフォルダからmailCount件目のメール取得 Set curMail = childFolder.Items.Item(mailCount) '重複チェック If Not dic.Exists(curMail.SenderEmailAddress) Then '同一データが存在しないので、登録 dic.Add Key:=curMail.SenderEmailAddress, Item:=curMail.SenderEmailAddress End If End If Next '現在のディレクトリが子ディレクトリを持っていれば '自分自身を呼び出す。(再帰呼び出し) If childFolder.Folders.Count <> 0 Then doResearch childFolder, dic Next End Sub 上記マクロは、全てのフォルダ内の全てのメールの送信者のアドレスを取得し、指定ファイルに出力するマクロです。同一アドレスが重複して出力されないようになっています。作成を終えたら、"ツール"->"マクロ"->"マクロ"でマクロダイアログを表示し、getSenderMailAddressを指定して"実行"押下で実行すれば、受信メールの送信者アドレス一覧が作成されます。メール本文からメールアドレスの部分を抽出するときは、まず関数doResearch内のsenderEMailAddressをBodyに変更し、全てのメールの本文を抽出します。(本文抽出は重複チェックなどしなくていいのですが...まあ良しとしましょう。) 次にある文章の中からメールアドレスのみ抽出してくれるサービス??を提供しているサイトがある(私も初めて知ったのですが....)ので、そのサイトに行き、作成された全メールの本文一覧ファイルの内容をインプットとして、メールアドレスを抽出します。ただし、数百通もあるとのことなので、本文一覧も相当量のデータになると思われます。一度に全てを抽出するのではなく、何回かに分けたほうがよいような気がします。以上で、本文よりメールアドレスを取得することがdきます。 以下に上述したサイトのURLを記載します。 http://www.ahref.org/cgi/mailchu/
その他の回答 (1)
- seri95
- ベストアンサー率69% (579/832)
有料なんですけど、メールアドレスをまとめて抽出してくれるソフトがあります。 http://atcopier.com/manual/index.html 重複アドレスや不正アドレスを削除することもできます。 一度にまとめて抽出するには OEの場合は、受信メールを一旦Outlookにエクスポートしてから、ひとまとめにしてテキストとして保存し、その中からアドレスだけを抽出する方法になるようです。 フリー版で動作を確認しましたが、扱えるアドレス数は10件までなので・・有料版(ちょっと高めです)でないと実用的ではありませんね。