OUTLOOK有延遲傳遞功能,可延遲傳遞的發送郵件在功能設計時(mircosoft的support幫助頁的解釋)就是郵件發送時的時間而不是郵件發送成功后的時間。比如早上10點發一封11點后的延遲傳遞郵件,11點后成功發出,可郵件的發送時間顯示還是10點而不是我想要的發送成功后的時間11點!所以想用vbs調用outlook發送郵件,配合windows計划任務設置定時啟動。
vbs調用outlook發送郵件代碼
以下test1.vbs、test2.vbs代碼方式在windows7下測試了,都行:
test1.vbs
set out=WScript.CreateObject("Outlook.Application")
Set oitem = out.CreateItem(olMailItem)
With oitem
.Subject ="這里是郵件主題"&now()
.To = "收信人@123.com"
.Body = "親愛的XXX"&chr(13)&" AAAAAAAAAAAAAAAAAA."&chr(13)&"你親愛的XXXXX"&chr(13)&MONTH(DATE())&"月"&day(DATE())&"日"
.Send
End With
set out=nothing
set oitem=nothing
MsgBox("郵件成功提交")
test2.vbs
'啟動Outlook
Set out=WScript.CreateObject("Outlook.Application")
'新建一份郵件
Set mailitem=out.CreateItem(0)
'設置郵件的主題
mailitem.SubJect="加班"
'設置郵件的正文
mailitem.Body="加班b"
'設置收件人
mailitem.To="test@163.com"
'增加附件
'mailitem.Attachments.Add("附件.txt")
mailitem.Send
Set mailitem=Nothing
Set out=Nothing
讀取收件人、發件人、郵件內容配置文件方式,沒測試過,代碼記錄下:
ForReading=1
TristateFalse=0
'建立FSO對象
Set fs=CreateObject("Scripting.FileSystemObject")
'打開存放內容的文件
Set file=fs.OpenTextFile("內容.txt",ForReading,TristateFalse)
'讀取全部內容
detail=file.ReadAll
Set file=Nothing
'打開存放收件人地址的文件
Set file=fs.OpenTextFile("收件人.txt",ForReading,TristateFalse)
'啟動Outlook
Set out=WScript.CreateObject("Outlook.Application")
'按照收件人地址文件種的內容群發郵件
Do While file.aAtEndOfLine<>True
'讀取一個收件人地址
manto=file.ReadLine
'新建一份郵件
Set mailitem=out.CreateItem(0)
'設置郵件的主題
mailitem.SubJect="主題內容"
'設置郵件的正文
mailitem.Body=detail
'設置收件人
mailitem.To=manto
'增加附件
mailitem.Attachments.Add("附件.txt")
mailitem.Send
Set mailitem=Nothing
Loop
Set fs=Nothing
Set out=Nothing
最后windows計划任務本身也支持發送郵件,看下圖。

