Windowsでメールを受信(メールボックスにアクセス)する方法
メールを送信する方法は、結構解説があるんですが、メールを受信する方法は、あまり解説が無い気がします。
という訳で、簡単な解説をば。
後、先に ごめんなさい を言っておきます。
- メールを受信する方法というより、正確には、メールボックスにアクセスする方法です。
まぁ、受信できるから同じですが。 - 恐らく、Windowsのメールサーバが動いている環境(Exchangeとか)でないと使えない気がします。
ちなみに、この手段を調べたのは、実は、
「Outlookを常時立ち上げておくと、メモリを喰われて何となく嫌」
「つぅか、Outlookを立ち上げておくと、仕事に集中できん」
「何か、アプリ作ってみたかった」
という裏事情があった為でもあります。わはは。
まぁ、百聞は一見に如かずという事で、最初にVBScriptなコードを示します。
Set oSes = CreateObject("MAPI.Session") WScript.Echo typename(oSes) oSes.Logon Set oFdr = oSes.Inbox WScript.Echo typename(oFdr) WScript.Echo oFdr.Name Set oMsgS = oFdr.Messages WScript.Echo typename(oMsgS) WScript.Echo oMsgS.Count For i = 1 to oMsgS.Count Set o = oMsgS.Item(i) WScript.Echo "-------------------------------" WScript.Echo "count:", i WScript.Echo typename(o) WScript.Echo "subject:", o.Subject WScript.Echo "type:", o.Type WScript.Echo "text:", o.Text WScript.Echo "text2:[", Len(o.Text), "]" WScript.Echo "size:", o.Size WScript.Echo "unread:", o.Unread Next
で、解説です。
メールにアクセスするには、"MAPI.Session"を使う
はい、これジューヨーです。
送信が"CDO.Message"だったから、受信は"CDO.Session"かな?と思うじゃないですか。(私だけかな?)
実は、"MAPI.Session"です。
メール送信と受信に使うActiveX DLLは違う
これも気付きにくいです。
(MSDN Libraryの解説を じーっと見て、ようやく気付きました)
だから、「上のスクリプト、おいらの環境じゃ動かないよ!」という場合、大抵「それは、あなたが cdo.dll をインスコしてないから」というのが答えです。
ちなみに、cdo.dllですが、普通にOutlookを入れただけでは動きません。(サーバー環境だと、Exchangeを突っ込むので一緒に入るらしい)
なもんで、Outlook辺りのCD-ROMから、検索し、Windowsのシステムディレクトリにコピーして、"regsvr32"して下さい。
それで入ります。