Winsock1.Close Winsock1.Connect If Not WaitForResponse("220", 15) Then StatusBar1.Panels(1).Text = "邮件服务器连接不上......" Exit Sub End If StatusBar1.Panels(1).Text = "连接服务器" & frmMain.SMTPServerIp & "完毕" '打开对话 Winsock1.SendData "HELO" & " " & Winsock1.LocalHostName & vbCrLf If Not WaitForResponse("250", 10) Then StatusBar1.Panels(1).Text = "无法打开邮件发送对话" Exit Sub End If '开始SMTP认证 Winsock1.SendData "AUTH LOGIN" & " " & vbCrLf If Not WaitForResponse("334", 10) Then StatusBar1.Panels(1).Text = "无法进行认证" Exit Sub End If StatusBar1.Panels(1).Text = "进行SMTP认证" '传入认证所要用户名,Base64加密 encodestr frmMain.username, tmpstr Winsock1.SendData tmpstr & vbCrLf If Not WaitForResponse("334", 10) Then StatusBar1.Panels(1).Text = "用户名无法进行认证" Exit Sub End If '传入密码 tmpstr = "" encodestr frmMain.userid, tmpstr Winsock1.SendData tmpstr & vbCrLf If WaitForResponse("553", 10) Then StatusBar1.Panels(1).Text = "密码无法进行认证" Exit Sub End If StatusBar1.Panels(1).Text = "验证完毕" '发送发送方地址 Winsock1.SendData "MAIL FROM:" & " " & txtFrom & vbCrLf If Not WaitForResponse("250", 10) Then StatusBar1.Panels(1).Text = "无法发送发送方地址" Exit Sub End If StatusBar1.Panels(1).Text = "发送发送方地址" '发送接收方地址 Winsock1.SendData "RCPT TO:" & " " & txtTo & vbCrLf If Not WaitForResponse("250", 10) Then StatusBar1.Panels(1).Text = "无法发送接收方地址" Exit Sub End If StatusBar1.Panels(1).Text = "发送接收方地址" '发送消息体 Winsock1.SendData "DATA" & vbCrLf If Not WaitForResponse("354", 10) Then StatusBar1.Panels(1).Text = "无法进行发送信件内容" Exit Sub End If StatusBar1.Panels(1).Text = "正在发送信件内容...."Dim fnum As Integer fnum = FreeFile() Open App.Path & "\mail.tmp" For Input As #fnum Winsock1.SendData mdata & vbCrLf While Not EOF(fnum) Line Input #fnum, strContent Winsock1.SendData strContent & vbCrLf Wend Close #fnum Winsock1.SendData "." & vbCrLf If Not WaitForResponse("250", 20) Then StatusBar1.Panels(1).Text = "信件内容发送不成功" & vbCrLf Exit Sub End If StatusBar1.Panels(1).Text = "发送完毕,退出" Winsock1.SendData "QUIT" & vbCrLf If Not WaitForResponse("221", 10) Then Exit Sub End If Winsock1.Close StatusBar1.Panels(1).Text = "发送信件完成 "
[email protected]!!!
Winsock1.Connect
If Not WaitForResponse("220", 15) Then
StatusBar1.Panels(1).Text = "邮件服务器连接不上......"
Exit Sub
End If
StatusBar1.Panels(1).Text = "连接服务器" & frmMain.SMTPServerIp & "完毕"
'打开对话
Winsock1.SendData "HELO" & " " & Winsock1.LocalHostName & vbCrLf
If Not WaitForResponse("250", 10) Then
StatusBar1.Panels(1).Text = "无法打开邮件发送对话"
Exit Sub
End If
'开始SMTP认证
Winsock1.SendData "AUTH LOGIN" & " " & vbCrLf
If Not WaitForResponse("334", 10) Then
StatusBar1.Panels(1).Text = "无法进行认证"
Exit Sub
End If
StatusBar1.Panels(1).Text = "进行SMTP认证"
'传入认证所要用户名,Base64加密
encodestr frmMain.username, tmpstr
Winsock1.SendData tmpstr & vbCrLf
If Not WaitForResponse("334", 10) Then
StatusBar1.Panels(1).Text = "用户名无法进行认证"
Exit Sub
End If
'传入密码
tmpstr = ""
encodestr frmMain.userid, tmpstr
Winsock1.SendData tmpstr & vbCrLf
If WaitForResponse("553", 10) Then
StatusBar1.Panels(1).Text = "密码无法进行认证"
Exit Sub
End If
StatusBar1.Panels(1).Text = "验证完毕"
'发送发送方地址
Winsock1.SendData "MAIL FROM:" & " " & txtFrom & vbCrLf
If Not WaitForResponse("250", 10) Then
StatusBar1.Panels(1).Text = "无法发送发送方地址"
Exit Sub
End If
StatusBar1.Panels(1).Text = "发送发送方地址"
'发送接收方地址
Winsock1.SendData "RCPT TO:" & " " & txtTo & vbCrLf
If Not WaitForResponse("250", 10) Then
StatusBar1.Panels(1).Text = "无法发送接收方地址"
Exit Sub
End If
StatusBar1.Panels(1).Text = "发送接收方地址"
'发送消息体
Winsock1.SendData "DATA" & vbCrLf
If Not WaitForResponse("354", 10) Then
StatusBar1.Panels(1).Text = "无法进行发送信件内容"
Exit Sub
End If
StatusBar1.Panels(1).Text = "正在发送信件内容...."Dim fnum As Integer
fnum = FreeFile()
Open App.Path & "\mail.tmp" For Input As #fnum
Winsock1.SendData mdata & vbCrLf
While Not EOF(fnum)
Line Input #fnum, strContent
Winsock1.SendData strContent & vbCrLf
Wend
Close #fnum
Winsock1.SendData "." & vbCrLf
If Not WaitForResponse("250", 20) Then
StatusBar1.Panels(1).Text = "信件内容发送不成功" & vbCrLf
Exit Sub
End If
StatusBar1.Panels(1).Text = "发送完毕,退出"
Winsock1.SendData "QUIT" & vbCrLf
If Not WaitForResponse("221", 10) Then
Exit Sub
End If
Winsock1.Close
StatusBar1.Panels(1).Text = "发送信件完成 "
有谁可以告诉我把色base 64编码是怎么一回事?
简单的说, 就是 要求把 每3个 8位(bit) 的字节(byte) 转化为4个6位的字节。 这4个6位字节的最高2位是零,没有任何意义。 转化后的编码只能 是以下 字符 组成 : A-Z,a-z,0-9,+,/ 和 用来补足 位的 等号= 。 其它的 就是 我前面说的那些了。用 ehlo 命令 连接,用 auth 命令 进行认证。
把 帐号 和 密码 用 base64 编码后发送。