お酒好きのおしりトラブル対策とは

こんにちは

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

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

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

このQ&Aに関連する最新のQ&A

A 回答 (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/
    • good
    • 0

有料なんですけど、メールアドレスをまとめて抽出してくれるソフトがあります。


http://atcopier.com/manual/index.html

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

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

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

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

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセル内のメールアドレスをメール送信先に一斉に移す方法

エクセル内に多数のメールアドレスを記録しています。(縦にズラーッとタイプしています。)1つ1つのアドレスが1行ずつ入っています。

これらのメールアドレスを簡単にメールの送信先に入れる方法はありますでしょうか。1つ1つコピー、貼り付けをしていくしかないのでしょうか。

詳しい方がいましたら教えてください。

Aベストアンサー

・メールアドレスが入力されているセル部分を選択し、Copy します。

・別のシートに、"形式を選択して貼り付け"
  [ 行列を入れ替える ] にチェックを入れてから、ok

・最後に、"名前をつけて保存" する際に、 ファイルの種類を CSV (カンマ区切り)にします。

 以上の作業で保存されたファイルを、「メモ帳」などで開けば良いと思います。


人気Q&Aランキング

おすすめ情報