var myOlApp = WScript.CreateObject("Outlook.Application");
var myNameSpace = myOlApp.GetNameSpace("MAPI");
var folder = myNameSpace.GetDefaultFolder(olFolderInbox);
フォルダ内のアイテムのコレクションとアイテムの数とアイテムは、
folder.Items //コレクション
folder.Items.Count //アイテムの数
folder.Items.Count(index) //アイテムの数
で得られます。
ここでのアイテムは要するにメールです。
index は1からの値を取ります。
scripts/title.ws (ファイルに保存にしてください)
------------------------------------------------------------
<JOB ID="title">
<REFERENCE GUID="{00062FFF-0000-0000-C000-000000000046}"/>
<SCRIPT LANGUAGE="JavaScript">
var myOlApp = WScript.CreateObject("Outlook.Application");
var myNameSpace = myOlApp.GetNameSpace("MAPI");
//受信トレイフォルダ
var folder = myNameSpace.GetDefaultFolder(olFolderInbox);
//受信トレイの中のメールの数
var nitems = folder.Items.Count;
for(var i = 1; i <= nitems; i++)
WScript.Echo(folder.Items(i).Subject); //タイトルを表示
//後始末はいらないと思うんだけど
WScript.DisconnectObject(myOlApp);
myOlApp = null;
</SCRIPT>
</JOB>
Subject プロパティでメールのタイトルが得られます。その他にも次のような重要なプロパティがあります。
| プロパティ | 説明 |
|---|---|
| ReceivedTime | 受信日時 |
| SenderName | 送信者名 |
| Body | 本文 |
ところが、このプロパティの中に送信者のアドレスは無いようです。
あと、受信日時もうまく拾えないことがあります。
こんなときかなり効率の悪いアドレスの拾い方があります。
それは SaveAs メソッドを使ってテキストに落とし、
それを読むという方法です。
テキストに落とすには、
MailItem.SaveAs(filename, olTXT);
とします。
こうして作成されたテキストは例外はありますがだいたい次のようになります。
差出人: tomoyo [tomoyo@daidouji.ne.jp]
送信日時: 1999年10月6日水曜日 21:30
宛先: sakura
件名: 幸せ絶頂ですわー!
アドレスを拾いたいときは、"差出人: "が現れたとき、[ ]の中を拾います。
scripts/address.ws (ファイルに保存にしてください)
--------------------------------------------------------------
<JOB ID="mail">
<REFERENCE GUID="{00062FFF-0000-0000-C000-000000000046}"/>
<SCRIPT LANGUAGE="JavaScript">
var myOlApp = WScript.CreateObject("Outlook.Application");
var myNameSpace = myOlApp.GetNameSpace("MAPI");
var folder = myNameSpace.GetDefaultFolder(olFolderInbox);
var nitems = folder.Items.Count
var tempfile = "c:\\windows\\temp\\mailaddress.txt";
var fs = WScript.CreateObject("Scripting.FileSystemObject");
for(var i = 1; i <= nitems; i++)
WScript.Echo(GetAddress(folder.Items(i)));
WScript.DisconnectObject(myOlApp);
myOlApp = null;
function GetAddress(mail) {
var str, stream;
//テンポラリファイルに落とす
mail.SaveAs(tempfile, olTXT);
//落としたファイルを読む
stream = fs.OpenTextFile(tempfile);
while(!stream.AtEndOfStream) {
str = stream.ReadLine();
if(/差出人: /.test(str)) { //差出人: に引っ掛かったら
//@を含んだ[]の中をアドレスとみて拾う
if(/\[([^\[]+@[^\]]+)\]/.exec(str)) {
stream.Close();
//正規表現の()の中にマッチした部分を返す
return RegExp.$1;
}
//マッチしなかったら差出人名が無くて
//裸でアドレスが書かれている可能性が高い
else if(/\s(\S+)$/.exec(str)) {
stream.Close();
return RegExp.$1;
}
}
}
stream.Close();
return null;
}
</SCRIPT>
</JOB>