VBS脚本发送邮件基础教程,解决报错:与服务器的传输连接失败,代码80040213 发送邮件服务器vbscdo代码

教程地址:https://www.runoob.com/vbscript/vbscript-tutorial.html

 
Dim name
Function test1()
MsgBox "lalal"
test1 = 1
End Function
name=test1()
MsgBox name
以上代码中可以看见  函数返回值是用函数名 = 值  的方式来返回

代码如下


 

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加密方式?

 

posted @ 2020-04-15 19:47  lonelyshy  阅读(2056)  评论(1编辑  收藏  举报