こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

【OutlookExpress】メールアドレスを抽出したい。

こんにちは

OutlookExpressで受信したメールの本文(オーダーフォーム)からメールアドレスの部分を
抽出したいのですが可能でしょうか。

また、受信したメールの「送信者」のアドレスを抽出することは可能でしょうか。

それぞれ数百通有るので途方に暮れています。
良い方法を教えてください。

投稿日時 - 2005-03-02 14:06:45

QNo.1246445

jkp

困ってます

質問者が選んだベストアンサー

こんにちは。

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/

投稿日時 - 2005-03-02 18:54:48

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(2)

ANo.2

有料なんですけど、メールアドレスをまとめて抽出してくれるソフトがあります。
http://atcopier.com/manual/index.html

重複アドレスや不正アドレスを削除することもできます。

一度にまとめて抽出するには
OEの場合は、受信メールを一旦Outlookにエクスポートしてから、ひとまとめにしてテキストとして保存し、その中からアドレスだけを抽出する方法になるようです。

フリー版で動作を確認しましたが、扱えるアドレス数は10件までなので・・有料版(ちょっと高めです)でないと実用的ではありませんね。

参考URL:http://atcopier.com/manual/index.html

投稿日時 - 2005-03-04 11:23:59

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-