タスクスケジューラを介して実行するスクリプトがあり、未読メールがないかどうかをチェックし、以下のような電子メールアラートを送信します。これをさらに強化するために、私は未読のメールをチェックし、「x」分より古いメールのみを送信する必要があります。x分より古いOutlookセッションで未読メールを確認するVBS
これを最も効果的に実行する方法についてのご意見はありますか?
おかげ
さらに答えで推奨コードを含めて、以下の更新されたコードを参照してください - 以下ただし、これは構文エラーに
Const olFolderInbox = 6
Const olMailItem = 0
dim objOutlook
call checkForUnreadMails
sub checkForUnreadMails()
dim objFolder, objNamespace
'get running outlook application or open outlook
Set objOutlook = GetObject(, "Outlook.Application")
If objOutlook Is Nothing Then
Set objOutlook = CreateObject("Outlook.Application")
End If
Set objNamespace = objOutlook.GetNamespace("MAPI")
'get inbox folder
Set objFolder = objNamespace.GetDefaultFolder(olFolderInbox)
'send mail if more than 10 mails are unread
if objFolder.UnReadItemCount > 10 then
sendMail "[email protected]"
end if
end sub
sub sendMail(address)
dim oItem
Set oItem = objOutlook.CreateItem(olMailItem)
With oItem
.To = address
.Subject = "There are unread emails"
.Body = "Please investigate the mailbox."
.send
End With
end sub
を引き起こし編集されたバージョン:
Const olFolderInbox = 6
Const olMailItem = 0
dim objOutlook
call checkForUnreadMails
sub checkForUnreadMails()
dim objFolder, objNamespace
'get running outlook application or open outlook
Set objOutlook = GetObject(, "Outlook.Application")
If objOutlook Is Nothing Then
Set objOutlook = CreateObject("Outlook.Application")
End If
Set objNamespace = objOutlook.GetNamespace("MAPI")
'get inbox folder
Set objFolder = objNamespace.GetDefaultFolder(olFolderInbox)
'look at unread emails
Set UnreadItems = objFolder.Items
'send mail if mails are unread and older than 15 mins
For i = UnreadItems.Count To 1 Step -1
If TypeName(UnreadItems.Item(i)) = "MailItem" Then
If DateDiff("n",now, UnreadItems.Item(i).ReceivedTime) > 15 Then
sendMail "[email protected]"
end if
end if
Next
sub sendMail(address)
dim oItem
Set oItem = objOutlook.CreateItem(olMailItem)
With oItem
.To = address
.Subject = "There are unread emails"
.Body = "Please investigate the mailbox."
.send
End With
end sub
Items.Find/FindNextまたはItems.Restrictを使用してフォルダ内のすべてのアイテムをループしないでください。 –