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計划任務本身也支持發送郵件,看下圖。