【玄人】素人ACCESS相談所【禁制】

このエントリーをはてなブックマークに追加
299名無しさん@そうだ選挙にいこう
Webのメールフォームから送信されたメールを、accessのテーブルに自動的に
保存する方法はないでしょうか。
まじで初心者なんで、よろしくお願いします。
300名無しさん@そうだ選挙にいこう:03/05/22 18:42
>>299
Vectorでみかけたが。。
Accessでメーラ作ってる人がいるようだから
必要なら問い合わせしてみたら?
301 :03/05/23 09:37
>>299
BASP21.DLLでがんばれ
http://www.hi-ho.ne.jp/babaq/basp21.html

>>300
ソースを販売している方の宣伝ですか?


むしろ301のほうが宣伝っぽい……
>>299
宣伝と間違われるのも癪なので、ちゃんと考えてみた。

結論は「Microsoft Outlookを使え」
OutlookのVBAで新規メール受信時にデータベースに書き込む処理を行うのだ。

以下は受信メールを自動仕訳で注文書フォルダに保存する環境での
Outlook用VBAです。Debug.Prinになっている行をデータベースに
書き込む処理に変更してください。

Private Sub Application_NewMail()
Dim myItem As Outlook.MailItem ' MailItemオブジェクト
Dim myMailFolder As Outlook.MAPIFolder ' MAPIFolderオブジェクト
Dim myFolder As Outlook.MAPIFolder ' MAPIFolderオブジェクト
Dim myNameSpace As Outlook.NameSpace ' NameSpaceオブジェクト
Dim myReply As Object ' MailItem.Replyオブジェクト
Dim i As Long
' NameSpaceオブジェクトの取得
Set myNameSpace = Application.GetNamespace("MAPI")
' 「受信トレイ」のオブジェクトを取得
Set myMailFolder = myNameSpace.GetDefaultFolder(olFolderInbox)
' 「注文書」フォルダのオブジェクトを取得
Set myFolder = myMailFolder.Folders("注文書")
' 「注文書」フォルダ内のすべてのアイテム数ループ
304301:03/05/23 11:42
続き
For i = 1 To myFolder.Items.Count
' MailItemオブジェクトを取得
Set myItem = myFolder.Items(i)
' 未読のメールのみに処理を行なう
If myItem.UnRead = True Then
Debug.Print myItem.ReceivedTime ' 受信日時
Debug.Print myItem.SenderName ' 送信者名
Set myReply = myItem.Reply ' 返信用アドレスを取得するためのダミー
Debug.Print myReply.Recipients.Item(1).Address '返信用アドレス
Debug.Print myItem.Subject ' 件名
Debug.Print myItem.Body ' 本文
' メッセージを既読に設定
myItem.UnRead = False
End If
Next i
End Sub

以前にどこかで拾ったソースを手直して作りました。
305301:03/05/23 11:56
既読メールが大量になると遅くなってしまうので、
処理済のメールは他のフォルダに移動する処理を追加してください。