这是一个别人的程序用VB SMTP等控件编写的发邮件程序,那位兄弟帮我讲讲怎么用它来收取邮件嘛!谢谢了啊!!!!!!
Private Sub SendEmail(smtpServerName As String, smtpUser As String, smtpPassword As String, _
receiverAddr As String, receiverName As String, _
senderAddr As String, senderName As String, _
emailTitle As String, emailContent As String)
Dim DSN As DsnConstants
DSN = dsnNever
On Error GoTo OnError
' Set SMTP control to block for up to
' 10 seconds before timing out
Smtp1.Timeout = 10000
' Connect to SMTP server
lsendingStatus.Caption = "Connecting to " + smtpServerName + "... " Smtp1.Login smtpServerName, 25, smtpUser, smtpPassword
' Remove any Capabilities we don't want
Smtp1.Capabilities.Clear
Smtp1.DSN DSN
' Clear error message (This would be set in the Progress event)
lsendProcess1.Caption = "Sending a E-Mail to" & receiverName
lsendProcess2.Caption = "Sending E-Mail's Title" & emailTitle
lsendResult.Caption = ""
' Send Message
lsendingStatus.Caption = "Sending Message ... "
' If sending raw message, recipients and sender must be set now.
With Smtp1.Message
' Clear any existing Content
.Content = ""
' Add Header Parameters
.To.Add receiverAddr
.From = senderAddr
.Cc.Add senderAddr
.Bcc.Add senderAddr
.Subject = emailTitle
' Add Message Body
.AddText emailContent + vbCrLf
End With
' 增加附件功能,待完善
Smtp1.Send ' Disconnect
lsendingStatus.Caption = "Logging out ... "
Smtp1.Logout
lsendingStatus.Caption = "The E-Mail is sent successful. "
EmailTimer.Enabled = True
GoTo Cleanup
OnError:
If badStatusMessage <> "" Then
lsendResult.Caption = "ERROR: " + badStatusMessage
badStatusMessage = ""
Else
lsendResult.Caption = "ERROR: " + Err.Description
End If
Smtp1.Abort
EmailTimer.Enabled = True
Exit Sub
Cleanup:
strSQL = "UPDATE EmailQueue SET Result='邮件已经发送成功',ResultFlag=1 WHERE User='" & receiverName & "' AND EmailTitle='" & emailTitle & "'"
Adocn.Open
Adocm.ActiveConnection = Adocn
Adocm.CommandText = strSQL
Adocm.Execute
Adocn.Close
End SubPrivate Sub xpcmdbutton9_Click()
fmpeople.Visible = True
fmEmailContent.Visible = False
fmSendList.Visible = False
fmCompanyInfo.Visible = False
xpcmdbutton9.Enabled = False
xpcmdbutton10.Enabled = True
xpcmdbutton11.Enabled = True
xpcmdbutton12.Enabled = True
End Sub
Public Function TranslateMethod(ByVal o As DartMailCtl.SmtpMethodConstants)
Select Case o
Case smtpLogin
TranslateMethod = "Login"
Case smtpLogout
TranslateMethod = "Logout"
Case smtpSend
TranslateMethod = "Send"
Case smtpReset
TranslateMethod = "Reset"
Case smtpQuickSend
TranslateMethod = "QuickSend"
Case smtpCommand
TranslateMethod = "Command"
Case Else
TranslateMethod = "Unable to resolve: " & o
End Select
End FunctionPublic Function TranslateStatus(ByVal s As DartMailCtl.SmtpStatusConstants)
Select Case s
Case smtpBad
TranslateStatus = "Bad"
Case smtpSending
TranslateStatus = "Send"
Case smtpOk
TranslateStatus = "OK"
Case smtpTo
TranslateStatus = "Recipient"
Case smtpFrom
TranslateStatus = "Sender"
Case Else
TranslateStatus = "Unable to resolve: " & s
End Select
End Function
Private Sub SendEmail(smtpServerName As String, smtpUser As String, smtpPassword As String, _
receiverAddr As String, receiverName As String, _
senderAddr As String, senderName As String, _
emailTitle As String, emailContent As String)
Dim DSN As DsnConstants
DSN = dsnNever
On Error GoTo OnError
' Set SMTP control to block for up to
' 10 seconds before timing out
Smtp1.Timeout = 10000
' Connect to SMTP server
lsendingStatus.Caption = "Connecting to " + smtpServerName + "... " Smtp1.Login smtpServerName, 25, smtpUser, smtpPassword
' Remove any Capabilities we don't want
Smtp1.Capabilities.Clear
Smtp1.DSN DSN
' Clear error message (This would be set in the Progress event)
lsendProcess1.Caption = "Sending a E-Mail to" & receiverName
lsendProcess2.Caption = "Sending E-Mail's Title" & emailTitle
lsendResult.Caption = ""
' Send Message
lsendingStatus.Caption = "Sending Message ... "
' If sending raw message, recipients and sender must be set now.
With Smtp1.Message
' Clear any existing Content
.Content = ""
' Add Header Parameters
.To.Add receiverAddr
.From = senderAddr
.Cc.Add senderAddr
.Bcc.Add senderAddr
.Subject = emailTitle
' Add Message Body
.AddText emailContent + vbCrLf
End With
' 增加附件功能,待完善
Smtp1.Send ' Disconnect
lsendingStatus.Caption = "Logging out ... "
Smtp1.Logout
lsendingStatus.Caption = "The E-Mail is sent successful. "
EmailTimer.Enabled = True
GoTo Cleanup
OnError:
If badStatusMessage <> "" Then
lsendResult.Caption = "ERROR: " + badStatusMessage
badStatusMessage = ""
Else
lsendResult.Caption = "ERROR: " + Err.Description
End If
Smtp1.Abort
EmailTimer.Enabled = True
Exit Sub
Cleanup:
strSQL = "UPDATE EmailQueue SET Result='邮件已经发送成功',ResultFlag=1 WHERE User='" & receiverName & "' AND EmailTitle='" & emailTitle & "'"
Adocn.Open
Adocm.ActiveConnection = Adocn
Adocm.CommandText = strSQL
Adocm.Execute
Adocn.Close
End SubPrivate Sub xpcmdbutton9_Click()
fmpeople.Visible = True
fmEmailContent.Visible = False
fmSendList.Visible = False
fmCompanyInfo.Visible = False
xpcmdbutton9.Enabled = False
xpcmdbutton10.Enabled = True
xpcmdbutton11.Enabled = True
xpcmdbutton12.Enabled = True
End Sub
Public Function TranslateMethod(ByVal o As DartMailCtl.SmtpMethodConstants)
Select Case o
Case smtpLogin
TranslateMethod = "Login"
Case smtpLogout
TranslateMethod = "Logout"
Case smtpSend
TranslateMethod = "Send"
Case smtpReset
TranslateMethod = "Reset"
Case smtpQuickSend
TranslateMethod = "QuickSend"
Case smtpCommand
TranslateMethod = "Command"
Case Else
TranslateMethod = "Unable to resolve: " & o
End Select
End FunctionPublic Function TranslateStatus(ByVal s As DartMailCtl.SmtpStatusConstants)
Select Case s
Case smtpBad
TranslateStatus = "Bad"
Case smtpSending
TranslateStatus = "Send"
Case smtpOk
TranslateStatus = "OK"
Case smtpTo
TranslateStatus = "Recipient"
Case smtpFrom
TranslateStatus = "Sender"
Case Else
TranslateStatus = "Unable to resolve: " & s
End Select
End Function
220 ESMTP spoken here 不必太过留意这些描述。因为这些描述可能会因服务器而异。你只须要知道代码所代表的意思就行了。代码220表示成功建立连接,服务器等待你的第一个命令。 向服务器传递的第一个命令是HELO. 该命令包含一个参数,即你的邮箱名。 HELO oleg 注意: 在RFC821中,HELO是一个可选择性命令,如果服务器不要求该命令的话,你可以把它忽略掉。 如果命令成功,服务器会返回一个代码为250的回应。下一步用MAIL FROM命令告诉服务器你想发一封邮件。该命令以发信人的邮件地址为参数。 MAIL FROM: [email protected] 发完命令后,如果服务器返回一个代码为250回应,你就可以向服务器发送RCPT TO命令了。该命令以收信人地址为参数,一看便知是告诉服务器你想将邮件发到收信人地址处。 RCPT TO: [email protected] 如果你想将邮件发给多个收件人的话。你需要多次使用RCPT TO命令,对每个命令,服务器都会返回代码为250的回应。 现在你可以向服务器发送邮件正文了。用DATA命令告诉服务器以下的内容为邮件正文。在你从服务器收到代码为354的回应后,你就可以发送邮件正文了。邮件按行发送,每行邮件以一个无回车的换行符结束(在VB中就是vbLf)示例程序知道何时使用换行符,何时使用回车加换行符。所以你只须按回车键就行了。下面是一个例子: Subject: My first e-mail message. First line of a message.
Second line.
. 注意上面最后一行的最后一个字符是一个小数点。这是正文结束的标志。用VB代码表示就是vbLf & "." & vbCrLf. 服务器收到这个标志后,就会立即向你返回一个代码为250的回应以及该邮件的唯一ID号。 250 WAA10568 Message accepted for delivery 任务完成了,你可以继续发送下封邮件,也可以断开同服务器的连接。如果要断开同服务器的连接就用QUIT命令。在这种情况下,服务器会返回一个代码为221的回应并断开连接。 QUIT 221 ns.cinfo.ru closing connection
[email protected]这是我的邮箱
2. 目录mail-attch包含发送带附件的email的程序。
3. 目录mailchecker包含接收邮件的程序。
4. 目录Mime包含编码(base64,quote-printable,Uuencode)解码的程序。
5. 目录sendmail包含发送无附件的email的程序。
6. 目录vbmail包含使用MAPI发送接收邮件的程序。
http://free.efile.com.cn/huangtao/ScreenEnglishShot.jpg
http://free.efile.com.cn/huangtao/ScreenShot.jpgsource download url:
http://free.efile.com.cn/huangtao/SmartmailSource.rarsetup Download Url:
http://free.efile.com.cn/huangtao/SmartMailSetup.rar
乱码
smtp 用于发送邮件,发送过程中,用户名及密码,一般都用BASE64加密,正文部分自定义,可直接使用明文。附件一般要加密。