VB 中用winsock控件发邮件的问题

yingnvwuyan 2010-03-03 10:30:33
Dim strData As String
Dim Start As Single
Dim WaitTime As Single

Private Sub cmdSend_Click()
Dim sFrom As String
Dim sTo As String
Dim sSubject As String
Dim sDate As String
Dim sMaileType As String
Dim sMailHeader As String
Dim sMailBody As String
Dim blnOK As String

If Winsock1.State = sckClose Then
Winsock1.Protocol = sckTCPProtocol
Winsock1.RemoteHost = txtServer.Text
Winsock1.RemotePort = 25
blnOK = WaitforResponse("220")
If Not blnOK Then
StatusBar1.Panels(1).Text = "Status:Connection Fail"
StatusBar1.Refresh
Exit Sub
End If

StatusBar1.Panels(1).Text = "Status:Connecting.."
StatusBar1.Refresh
Winsock1.SendData "HELO" & txtServer.Text & vbCrLf
blnOK = WaitforResponse("250")
If Not blnOK Then
StatusBar1.Panels(1).Text = "Status:Connection Fail"
StatusBar1.Refresh
Exit Sub
End If
StatusBar1.Panels(1).Text=
"Status:Connected"
StatusBar1.Refresh
Winsock1.SendData "MAIL FORM:" & Trim
(txtFromAddress.Text) & vbCrLf
StatusBar1.Panels(1).Text = "Status:"
Sending Message"
StatusBar1.Refresh
blnOK = WaitforResponse("250")
If Not blnOK Then
StatusBar1.Panels(1).Text = "Status:"
Connection Fail"
StatusBar1.Refresh
Exit Sub
End If
Winsock1.SendData "RCPT TO:" & Trim
(txtToAddress.Text) & vbCrLF
blnOK = WaitforResponse("250")
If Not blnOK Then
StatusBar1.Panels(1).Text = "Status:"
Connection Fail"
StatusBar1.Refresh
Exit Sub
End If
Winsock1.SendData "DATA" & vbCrLf
blnOK = WaitforResponse("354")
If Not blnOK Then
StatusBar1.Panels(1).Text = "Status:"
Connection Fail"
StatusBar1.Refresh
Exit Sub
End If
'E-Mail Header
sFrom="From:"""& txtFromName.Text &
"""<" & Trim(txtFromAddress.Text) &">
" & vbCrLf
sTo = "To:"" & txtToName.Text & """ < ""
& Trim(txtTomAddress.Text) &"> " & vbCrLf
sSubject = "Subject: " & txtSubject.Text
& vbCrLf
sDate="Date: "& Format(Date "Ddd") &
"." & Format(Date. "dd Mmm YYYY") & "
" & Format(Time. "hh:mm:ss") & " +0800"
& vbCrLf
sMailType = "MIME-Version: 1.0" & vbCrLf
& "X-Mailer: lnternet Mail Service
(5.5.2448.0)" & vbCrLf
sMailHeader=sFrom & sTO & sSubject &
sDate & sMailType
Winsock1.SendData sMailHeader & vbCrLf
sMailBody = txtMessage.Text & vbCrLf
Winsock1.SendData sMailBody & vbCrLf
Winsock1.SendData vbCrLf & "." & vbCrLf
blnOK = WaitforResponse("250")

If Not blnk Then
StatusBar1.Panels(1).Text = "Status:"
Connection Fail"
StatusBar1.Refresh
Exit Sub
End If

Winsock1.SendData "OUIT" & vbCrLf
StatusBar1.Panels(1).Text = "Status:"
Disconnecting ""
StatusBar1.Refresh
blnOK=WaitforResponse("221)
If Not blnOK Then
StatusBar1.Panels(1).Text = "Status:"
Connection Fail"
StatusBar1.Refresh
Exit Sub
End If
Winsock1.Close
StatusBar1.Panels(1).Text = "Staus:"
Mail Sent"
StatusBar1.Refresh
End If
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal
As Long)
Winsock1.GetData strData
End Sub

Private Function WaitforResponse(ResponseCode As
Sting) As Boolean
Start = Timer
'SMTP Error: Time Out
Do White Len(strData)=0
WaitTime = Timer - Start
DoEvents
If WaitTime > 50 Then
MsgBox "SMTP Error : Tine Out". vbCritical
WaitforResponse = False
Exit Funtion
End If
Loop
'Winsock Error
Do While Left(strData, 3) <> ResponseCode
DoEvents
If WaitTime > 50 Then
MsgBox "SMTP Error:" & ResponseCode
& " " & strData ,vbCritical
WaitforResponse = False
Exit Function
End If
Loop

strData = ""
WaitforResponse = True
End Function

Private Sub cmdExit_Click()
If Winsock1.State <> scocked Then
Winsock1.Close
End If

End
End Sub


'为什么说WaitforResponse函数未定义,该怎么改呢
...全文
123 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
yingnvwuyan 2010-03-04
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
blnOK=WaitforResponse("221")

Private Function WaitforResponse(ResponseCode As
                                  String) As Boolean

这个代码是手输入的还是扫描识别的,到处都是错误。
建议lz先掌握原理,这个代码没用的。

对着书本输入的
threenewbee 2010-03-04
  • 打赏
  • 举报
回复
blnOK=WaitforResponse("221")

Private Function WaitforResponse(ResponseCode As
String) As Boolean

这个代码是手输入的还是扫描识别的,到处都是错误。
建议lz先掌握原理,这个代码没用的。
01 , 01.txt 《 VB6.0中通过MSChart控件调用数据库 》 02 , 02.txt 《 用VB6实现动态增减控件 》 03 , 03.txt ActiveX控件的创建 04 , 04.txt ADO控件和DATA控件的冲突(不能共存)的解决方法 05 , 05.txt Combo的自动查询技术 06 , 06.txt DirectX7.0使用心得(1) 07 , 07.txt DirectX7.0使用心得(2) 08 , 08.txt DirectX7.0使用心得(3) 09 , 09.txt FSO对象模型在VB中的应用 10 , 10.txt MsComm 控件的文字传输范例 11 , 11.txt Office或IE4风格的ToolBar 12 , 12.txt Regsvr32.exe注册控件的具体用法 13 , 13.txt TextBox的自动调节 14 , 14.txt TextBox实现打印机效果 15 , 15.txt TreeView的基本操作 16 , 16.txt VB5中DBGRID控件VB6中使用 17 , 17.txt VB6.0动态加载ActiveX控件漫谈 18 , 18.txt VB与MS-Draw开发通用作图软件 19 , 19.txt VB中APP对象及其应用 20 , 20.txt VB中list控件的功能扩充 21 , 21.txt VB中防止将重复项目添加到列表框控件中 22 , 22.txt VB中用Multimedia MCI控件开发多媒体应用 23 , 23.txt Win Api在VB中的妙用 24 , 24.txt WINDOWS SCRIPT HOST对象在VB中的使用 25 , 25.txt 安装向导生成程序组并建立多个程序项 26 , 26.txt 保存复选框选项 27 , 27.txt 不用OCX来创建自己的控件(一) 28 , 28.txt 成组更新控件属性 29 , 29.txt 创建数据驱动窗体 30 , 30.txt 得到鼠标位置 31 , 31.txt 调整 Combo 下拉部分的宽度 32 , 32.txt 动态加入控件VB控件数组中 33 , 33.txt 对ListView中的列排序 34 , 34.txt 放一个Combo到Toolbar中 35 , 35.txt 改变 ListIndex而不发生 Click 事

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧