教程地址:https://www.runoob.com/vbscript/vbscript-tutorial.html
代碼如下
function Send_mail(You_Account,You_Password,Send_Email,Send_Email2,Send_Topic,Send_Body,Send_Attachment)
'code by NetPatch
'VBS發送郵件參數說明
'You_Account:你的郵件帳號
'You_Password:你的郵件密碼
'Send_Email: 主要郵件地址
'Send_Email2: 備用郵件地址
'Send_Topic: 郵件主題
'Send_Body: 郵件內容
'Send_Attachment:郵件附件
You_ID=Split(You_Account, "@", -1, vbTextCompare) '字符串分隔
'帳號和服務器分離
MS_Space = "http://schemas.microsoft.com/cdo/configuration/"
'這個是必須要的,不過可以放心的事,不會通過微軟發送郵件
Set Email = CreateObject("CDO.Message")
Email.From = You_Account
'這個一定要和發送郵件的帳號一樣
Email.To = Send_Email '要發給誰
If Send_Email2 <> "" Then
Email.CC = Send_Email2 '備用發給誰
End If
Email.Subject = Send_Topic '郵件主題
Email.Textbody = Send_Body '郵件內容
If Send_Attachment <> "" Then
Email.AddAttachment Send_Attachment '郵件附件
End If
With Email.Configuration.Fields
.Item(MS_Space&"sendusing") = 2 '發信端口
.Item(MS_Space&"smtpserver") = "smtp."&You_ID(1) 'SMTP服務器地址
.Item(MS_Space&"smtpserverport") = 25 'SMTP服務器端口
.Item(MS_Space&"smtpauthenticate") = 1 '服務器認證方式
.Item(MS_Space&"sendusername") = You_Account '你的郵件帳號
.Item(MS_Space&"sendpassword") = You_Password '你的郵件密碼
.Item(schema & "smtpusessl") = True '是否使用SSL
.Item(schema & "smtpconnectiontimeout") = 20
.Update
End With
Email.Send
'發送郵件
Set Email=Nothing
'關閉組件
Send_Mail=True
'如果沒有任何錯誤信息,則表示發送成功,否則發送失敗
If Err Then
Err.Clear
Send_Mail=False
End If
End Function
'以下是利用上面的函數發送帶附件的郵件例子
If Send_Mail("account@163.com","password.","test@qq.com","","日志文件","郵件內容","d:\log.txt")=True Then
MsgBox "Success"
Else
MsgBox "fail"
End If
錯誤列舉
1. 與服務器的傳輸鏈接失敗
解決方案,是我原來的代碼開啟了SSL鏈接 而網易的SSL的鏈接是25端口而非465端口,將端口改一下 就可以用了,
測試發送郵件的賬號盡量別使用qq郵箱 有問題
因為qq郵箱有一個授權碼的問題,導致不能登賬號
以下是用qq郵箱成功發送的郵件代碼
function Send_mail(You_Account,You_Password,Send_Email,Send_Email2,Send_Topic,Send_Body,Send_Attachment)
'code by NetPatch
'VBS發送郵件參數說明
'You_Account:你的郵件帳號
'You_Password:你的郵件密碼
'Send_Email: 主要郵件地址
'Send_Email2: 備用郵件地址
'Send_Topic: 郵件主題
'Send_Body: 郵件內容
'Send_Attachment:郵件附件
You_ID=Split(You_Account, "@", -1, vbTextCompare) '字符串分隔
'帳號和服務器分離
MS_Space = "http://schemas.microsoft.com/cdo/configuration/"
'這個是必須要的,不過可以放心的事,不會通過微軟發送郵件
Set Email = CreateObject("CDO.Message")
Email.From = You_Account
'這個一定要和發送郵件的帳號一樣
Email.To = Send_Email '要發給誰
If Send_Email2 <> "" Then
Email.CC = Send_Email2 '備用發給誰
End If
Email.Subject = Send_Topic '郵件主題
Email.Textbody = Send_Body '郵件內容
If Send_Attachment <> "" Then
Email.AddAttachment Send_Attachment '郵件附件
End If
With Email.Configuration.Fields
.Item(MS_Space&"sendusing") = 2 '發信端口
.Item(MS_Space&"smtpserver") = "smtp."&You_ID(1) 'SMTP服務器地址
.Item(MS_Space&"smtpserverport") = 25 'SMTP服務器端口
.Item(MS_Space&"smtpauthenticate") = 1 '服務器認證方式
.Item(MS_Space&"sendusername") = You_Account '你的郵件帳號
.Item(MS_Space&"sendpassword") = You_Password '你的郵件密碼
'.Item(schema & "smtpusessl") = True '是否使用SSL
.Item(schema & "smtpconnectiontimeout") = 20
.Update
End With
Email.Send
'發送郵件
Set Email=Nothing
'關閉組件
Send_Mail=True
'如果沒有任何錯誤信息,則表示發送成功,否則發送失敗
If Err Then
Err.Clear
Send_Mail=False
End If
End Function
'以下是利用上面的函數發送帶附件的郵件例子
If Send_Mail("account@163.com","授權碼","test@qq.com","","日志文件","郵件內容","d:\log.txt")=True Then
'一定要注意 這邊的密碼不是qq郵箱賬號密碼,而是qq生成的授權碼
MsgBox "Success"
Else
MsgBox "fail"
End If
參考鏈接:qq, 如何設置POP3/SMTP的SSL加密方式?