以下是2個發送郵件的VBS腳本,且解決了郵件主題亂碼的問題。
之前應準備郵箱並開啓SMTP服務,本例是用139郵箱發送郵件,其它郵箱請自行嘗試。
發件郵箱:[email protected]
SMTP:SMTP.139.COM
郵箱密碼:123456789
腳本1:
NameSpace = "http://schemas.microsoft.com/cdo/configuration/" ' 這個必須有,應該是VBS腳本鏈接微軟網站獲取某些支持應用的,刪除的話vbs腳本會報錯!
Set Email = CreateObject("CDO.Message") ' 調用vbs郵件接口
Email.From = "[email protected]" ' 發信人地址
Email.to = "[email protected]" ' 收信人地址
Email.Subject = "=?UTF-8?B?6LSi5Yqh56eR55m75b2V77ya?="+cstr(now())+cstr(now()) ' 本行的含義見下文
Email.Textbody = "郵件正文"
'Email.AddAttachment "d:\1.txt" ' 如果有附件就在這裏指明,本例註釋掉了
With Email.Configuration.Fields
.Item(NameSpace&"sendusing")= 2
.Item(NameSpace&"smtpserver")= "smtp.139.com" ' 發信服務器,也可以寫IP地址
.Item(NameSpace&"smtpserverport")= 25 ' SMTP端口
.Item(NameSpace&"smtpauthenticate")= 1
.Item(NameSpace&"sendusername")= "abc" ' 用戶名
.Item(NameSpace&"sendpassword")= "123456789" ' 郵箱密碼
.update
End With
Email.Send
Set Emaill=Nothing
以上腳本“Email.Subject = "=?UTF-8?B?6LSi5Yqh56eR55m75b2V77ya?="+cstr(now())+cstr(now())”一行的含義:
Email.Subject是郵件標題,默認以BASE64編碼發送,所以如果直接寫中文,例如Email.Subject = "中文",郵件標題肯定是亂碼,解決方法有2個:
① 去網站:https://www.sendblaster.com/utf8-email-subject-encoder/ 把中文標題直接轉爲BASE64編碼填入腳本(也可搜索關鍵字:Utf8 Email Subject Encoder),郵件標題就顯示爲中文了,上例是把“財務科登錄:“編碼爲BASE64,後跟郵件發送時間。
② 在網上找在線BASE64編碼器,比如https://tool.oschina.net/ 進入”BASE64編碼解碼“,填入漢字將其編碼爲BASE64,在輸出的字符串前面添加 =?UTF-8?B? 在後面添加 ?=
例如:”人事科登錄:“編碼爲BASE64的輸出是:5Lq65LqL56eR55m75b2V
那麼郵件標題的取值就是:=?UTF-8?B?5Lq65LqL56eR55m75b2V?=
另一個技巧:Email.Subject = "=?UTF-8?B?6LSi5Yqh56eR55m75b2V77ya?="+"abc"+cstr(now())+cstr(now())
中間可以用加號連接字符串,或者UTF-8字符。
腳本2:
'Create the objects require for sending email using CDO
Set objMail = CreateObject("CDO.Message")
Set objConf = CreateObject("CDO.Configuration")
Set objFlds = objConf.Fields
' 設置CDO object的各種參數和屬性
objFlds.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 'cdoSendUsingPort
' 此處寫入你的SMTP服務器的域名或者IP,例如smtp.163.com:
objFlds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.139.com"
' 此處寫SMTP服務器端口號:
objFlds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
' 如果SMTP不需要授權,就把以下3行都註釋掉,但目前大多數SMTP服務器都需要授權,所以不用動,填入郵箱的用戶名和密碼:
objFlds.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "abc"
objFlds.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "123456789"
objFlds.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 'cdoBasic
objFlds.Update
objMail.Configuration = objConf
objMail.From = "[email protected]" ' 發件郵箱
objMail.To = "[email protected]" ' 收件郵箱
objMail.Subject = "=?UTF-8?B?6LSi5Yqh56eR55m75b2V77ya?="+cstr(now())+cstr(now())
objMail.TextBody = "郵件正文"
objMail.Send
Set objFlds = Nothing
Set objConf = Nothing
Set objMail = Nothing