VB编写登陆TP服务器简介 (vb 登陆stmp服务器)

TP(Simple Ml Transfer Protocol)是一种用于电子邮件传输的常用协议。它允许电子邮件发送者使用电子邮件客户端程序(例如Outlook)向邮件服务器发送消息,最终将邮件发送到收件人的电子邮件地址。而在这个过程中,需要使用到TP服务器进行身份认证。因此,本文将会介绍VB编写登陆TP服务器的方法。

1. TP服务器登陆的必要性

在使用TP服务器发送电子邮件时,很多时候需要进行身份验证,以确保只有授权的用户才能发送电子邮件。否则,TP服务器可能会拒绝发送邮件,导致邮件无法到达收件人邮箱。

2. VB编写TP登录的基本步骤

以下是使用VB编写TP服务器登录程序的基本步骤:

1) 连接TP服务器。需要使用Socket类创建与TP服务器的TCP连接,可以使用以下代码:

Dim client As New TcpClient(“tp.example.com”, 25)

其中,”tp.example.com”是TP服务器的域名或IP地址。

2) 检查服务器是否已准备好与客户端通信。当与TP服务器建立连接之后,需要向TP服务器发送“HELO”命令,表示客户端已准备好发送邮件。以下是发送“HELO”命令的代码:

Dim stream As NetworkStream = client.GetStream()

Dim data As [Byte]() = System.Text.Encoding.ASCII.GetBytes(“HELO” + _

System.Environment.MachineName + vbCrLf)

stream.Write(data, 0, data.Length)

3) 身份认证。为了验证客户端的身份,TP服务器需要进行身份认证。在VB中,可以使用Login模块来完成身份认证,以下是使用Login模块进行身份认证的代码:

Dim user As String = “username”

Dim password As String = “password”

Dim tpAuth As New Login(client, stream)

tpAuth.Authenticate(user, password)

其中,”username”和”password”是在TP服务器上注册的用户名和密码。

4) 发送邮件。身份认证后,客户端就可以向TP服务器发送邮件了。以下是使用VB发送邮件的代码:

Dim from As String = “sender@example.com”

Dim toAdd As String = “recipient@example.com”

Dim subject As String = “Test Eml”

Dim body As String = “This is a test eml.”

Dim ml As MlMessage = New MlMessage(from, toAdd, subject, body)

Dim tp As New SmtpClient(“tp.example.com”)

tp.Send(ml)

在发送邮件之前,需要添加MlMessage类和SmtpClient类,以实现邮件的构建和发送。

3. VB编写TP登录的重要注意事项

在使用VB编写TP登录代码的时候,需要注意以下几个事项:

1) TP服务器地址和端口号,需要与要发送邮件的TP设置相同。

2) 所登录的TP服务器必须允许客户端通过身份验证方式发送邮件。

3) 在身份认证之前,需要使用Socket类创建与TP服务器的TCP连接。

4) 身份验证需要使用登录模块完成,需要在登录之前设置好用户名和密码。

5) 发送邮件之前,需要添加MlMessage类和SmtpClient类,以实现邮件的构建和发送。

4.

TP服务器登陆是发送电子邮件的必要步骤,在VB中,可以使用Socket类和Login模块来完成TP服务器登陆操作。在使用VB编写TP登录代码时,需要注意TP服务器地址和端口号、允许客户端通过身份验证方式发送邮件、TCP连接的创建、登录模块的设置和MlMessage类、SmtpClient类的添加等重要事项。

相关问题拓展阅读:

怎么设置TP服务器

TP协议简介· ·–··vbeden TP被用来在因特网上传递电子邮件。文件RFC821规定了该协议的所有细节。但是你只须记住下面的内容--该协议的基本命令和方法就行了。 协议的原理很简单。无非是一个客户端计算机向服务器发送命令,然后服务器向客户端计算机返回一些信息。客房端发送的命令以及服务器的回应都是字符串,你并不需要特别的软件就能读出它们。如果你仔细看过Winsock Terminal示例程序的源代码,你就会发现这一点。现在让我们用这个示例程序来向自己发一封电子邮件吧。 运行示例程序,单击\”Connect\”按钮,在\”Connect to…\”对话框中输入你的电子邮件服务器的地址,选择TP选项。最后按\”Connect\”按钮。如果连接成功,Winsock控件会产生Connected事件,在状态栏中也可看到连接成功的信息。在主文本窗口中你将看到从服务器返回的文本。该文本包含一个三位数的代码及描述,例如: 220-ns.cinfo.ru Sendmail 8.6.12/8.6.9 ready at Wed, 22 Apr:54:41 +ETP spoken here 不必太过留意这些描述。因为这些描述可能会因服务器而异。你只须要知道代码所代表的意思就行了。代码220表示成功建立连接,服务器等待你的之一个命令。 向服务器传递的之一个命令是HELO. 该命令包含一个参数,即你的邮箱名。 HELO oleg 注意: 在RFC821中,HELO是一个可选择性命令,如果服务器不要求该命令的话,你可以把它忽略掉。 如果命令成功,服务器会返回一个代码为250的回应。下一步用MAIL FROM命令告诉服务器你想发一封邮件。该命令以发信人的邮件地址为参数。 MAIL FROM: 发完命令后,如果服务器返回一个代码为250回应,你就可以向服务器发送RCPT TO命令了。该命令以收信人地址为参数,一看便知是告诉服务器你想将邮件发到收信人地址处。 RCPT TO: 如果你想将邮件发给多个收件人的话。你需要多次使用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

怎样用VB发送和接收邮件?

我可以给你发送一个,收到后如果满意的话,记得加分啊!

需要的控件,模块自己加下~~

Option Explicit

Private Const mc_strRand As String = “abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_”

Private m_strEncodedFiles As String

Private m_SendLen As Long

Private m_State As TP_State

Private Enum TP_State ‘TP指令序列

MAIL_CONNECT

MAIL_HELO

MAIL_FROM

MAIL_RCPTTO

MAIL_DATA

MAIL_DOT

MAIL_QUIT

MAIL_txtUserName

MAIL_PASS

MAIL_LOGIN

End Enum

Private Sub Form_Load()

Inisj

End Sub

Private Sub cmdAddAdjunct_Click()

With dlgFile

.ShowOpen

If Len(.FileName) > 0 Then

lstAttachments.AddItem .FileName

End If

End With

End Sub

Private Sub cmdRemoveAdjunct_Click()

On Error Resume Next

lstAttachments.RemoveItem lstAttachments.ListIndex

End Sub

Private Sub cmdExit_Click()

Unload Me

End Sub

Private Sub CmdSend_Click()

Dim strserver As String

Dim lngColonPos As Long

Dim lngPort As Long

tcpMailServer.Close

tcpMailServer.LocalPort = 0

strserver = txtTPServerName

lngColonPos = InStr(strserver, “:”)

If lngColonPos = 0 Then

tcpMailServer.Connect strserver, 25

Else

‘特殊端口的TP服务器

lngPort = CLng(Right$(strserver, Len(strserver) – lngColonPos))

strserver = Left$(strserver, lngColonPos – 1)

tcpMailServer.Connect strserver, lngPort

End If

m_State = MAIL_CONNECT

StatusTxt = “正与服务器连接”

End Sub

Private Sub cmdRemoveHtmlFile_Click()

txtHtml = vbNullString

End Sub

Private Sub cmdAddHtmlFile_Click()

With dlgFile

.ShowOpen

If Len(.FileName) > 0 Then

txtHtml = .FileName

End If

End With

End Sub

Private Sub tcpMailServer_DataArrival(ByVal bytesTotal As Long)

Dim strServerResponse As String ‘服务器响应字符

Dim strResponseCode As String ‘响应码

Dim intUniqueyAs Integer ‘唯一项

Dim strMixedAs String

Dim strAlternative As String

Dim strFileNameAs String ‘附件名

Dim strAttachNameAs String ‘编码后的附件名

Dim strFilePathAs String ‘附件路径

Dim strCodeTableAs String

Dim data As String

Dim i As Long

Call tcpMailServer.GetData(strServerResponse)

strResponseCode = Left$(strServerResponse, 3)

‘Debug.Print strServerResponse

If strResponseCode = “250” Or _

strResponseCode = “220” Or _

strResponseCode = “354” Or _

strResponseCode = “334” Or _

strResponseCode = “235” Or _

strResponseCode = “221” Then

Select Case m_State

Case MAIL_CONNECT

m_State = MAIL_HELO

tcpMailServer.SendData “HELO ” & Trim$(txtPostManAddress) & vbCrLf

StatusTxt = “登陆服务器”

‘Server Answer 220 tp.qq.com ETP QQMail Ver 2.2

Case MAIL_HELO

m_State = MAIL_txtUserName

tcpMailServer.SendData “AUTH LOGIN” & vbCrLf

StatusTxt = “登陆认证”

‘Server Answer 250 tp.qq.com

Case MAIL_txtUserName

m_State = MAIL_PASS

tcpMailServer.SendData (Base64_Encode(Trim$(txtUserName.Text))) & vbCrLf

‘user NDAzMTAwMTU= 用户名加密发送

StatusTxt = “正在校验用户名”

‘Server Answer 334 VXNlcm5hbWU6

Case MAIL_PASS

m_State = MAIL_LOGIN

tcpMailServer.SendData (Base64_Encode(txtPassWord)) & vbCrLf

‘pass anNqd2VpeWk3NQ==

StatusTxt = “校验用户密码”

‘Server Answer 334 UGFzc3dvcmQ6

Case MAIL_LOGIN

m_State = MAIL_FROM

tcpMailServer.SendData “MAIL FROM: ” & vbCrLf

StatusTxt = “接收人邮件地址”

‘Server Answer 235 Authentication successful 认证成功

Case MAIL_FROM

m_State = MAIL_RCPTTO

tcpMailServer.SendData “RCPT TO: ” & vbCrLf

StatusTxt = “邮件发送之中…”

‘Server Answer 250 Ok

Case MAIL_RCPTTO

m_State = MAIL_DATA

tcpMailServer.SendData “DATA” & vbCrLf

StatusTxt = “获取邮件内容”

‘Server Answer 250 Ok

Case MAIL_DATA

For i = 1 To 24

Randomize

intUniquey = Int(Rnd * Len(mc_strRand)) + 1

strCodeTable = strCodeTable & Mid$(mc_strRand, intUniquey, 1)

Next

strMixed = “=00=_strMixed_” & strCodeTable

strAlternative = “=00=strAlternative_” & strCodeTable

m_State = MAIL_DOT

m_SendLen = 0

data = “From:” & txtUserName.Text & ” ” & vbCrLf’发件人

data = data & “To:” & vbNullString & ” ” & vbCrLf ‘收件人

data = data & “X-Mailer:程序太平洋:邮件发送软件V1.0” & vbCrLf

data = data & “Subject:” & Chr$(32) & txtSubject & vbCrLf’邮件主题

data = data & “MIME-Version: 1.0” & vbCrLf’MIME邮件版本

data = data & “Content-Type: multipart/mixed;” & vbCrLf _

& ” boundary=” & “””” & strMixed & “””” & vbCrLf

If lstAttachments.ListCount 0 Then ‘如果有附件则进行编码发送

For i = 0 To lstAttachments.ListCount – 1

lstAttachments.ListIndex = i

strFilePath = lstAttachments.Text

strFileName = Dir(strFilePath) ‘提取文件名

strAttachName = Chr$(34) & “=??B?” & Encode(strFileName) & “?=” & Chr$(34) ‘处理文件名

m_strEncodedFiles = EncodeFromFile(strFilePath)

data = data & vbCrLf & “–” & strMixed & vbCrLf ‘分界线

data = data & “Content-Type: application/octet-stream;” & vbCrLf

data = data & ” name=” & strAttachName & vbCrLf

data = data & “Content-Transfer-Encoding:base64” & vbCrLf

data = data & “Content-Disposition: attachment;” & vbCrLf

data = data & ” filename=” & strAttachName & vbCrLf & vbCrLf

data = data & m_strEncodedFiles & “==” & vbCrLf

‘Debug.Print m_strEncodedFiles

Next i

End If

If Len(txtText) 0 Then’如果有文本则编码发送

data = data & vbCrLf & “–” & strMixed & vbCrLf _

& “Content-Type: multipart/alternative;” & vbCrLf _

& “boundary=” & “””” & strAlternative & “””” & vbCrLf & vbCrLf _

& vbCrLf & “–” & strAlternative & vbCrLf’文本开始

data = data & “Content-Type: text/plain;” & vbCrLf _

& “charset=” & “””” & “gb2312” & “””” & vbCrLf _

& “Content-Transfer-Encoding:base64” & vbCrLf & vbCrLf _

& Encode(txtText) & vbCrLf’文本正文

data = data & “–” & strAlternative & “–” & vbCrLf’结束文本的发送

End If

If Len(txtHtml) 0 Then’如果有网页则编码发送

data = data & vbCrLf & “–” & strMixed & vbCrLf _

& “Content-Type: multipart/alternative;” & vbCrLf _

& “boundary=” & “””” & strAlternative & “””” & vbCrLf & vbCrLf _

& vbCrLf & “–” & strAlternative & vbCrLf’文本开始

data = data & “Content-Type: text/html;” & vbCrLf _

& “charset=” & “””” & “gb2312” & “””” & vbCrLf _

& “Content-Transfer-Encoding:base64” & vbCrLf & vbCrLf _

& EncodeFromFile(txtHtml) & vbCrLf ‘文本正文

data = data & “–” & strAlternative & “–” & vbCrLf’结束文本的发送

End If

data = data & “–” & strMixed & “–” & vbCrLf ‘结束附件的发送

data = data & “.” & vbCrLf

m_SendLen = Len(data)

PBWock.Min = 0

PBWock.Max = m_SendLen

Call tcpMailServer.SendData(data)

Debug.Print data

‘Server Answer 354 Send from Rising mail proxy

Case MAIL_DOT

m_State = MAIL_QUIT

tcpMailServer.SendData “QUIT” & vbCrLf

StatusTxt = “邮件成功发送!!!”

‘Server Answer 250

Case MAIL_QUIT

tcpMailServer.Close

StatusTxt = “待命之中…”

End Select

Else

tcpMailServer.Close

End If

End Sub

Private Sub tcpMailServer_SendComplete()

Me.Caption = “邮件发送程序(支持tp服务器验证)”

End Sub

Private Sub tcpMailServer_SendProgress(ByVal bytesSent As Long, ByVal bytesRemaining As Long)

If m_SendLen > 0 Then

PBWock.Value = m_SendLen – bytesRemaining

Me.Caption = “” & Round(bytesRemaining * 100 / m_SendLen, 2) & “%”

End If

End Sub

我有啊··以前大学的时候有写过··呵呵··

简单啦··VB中有相应的东东··

LABEL控件是自己随便加的,我写的是LABEL2是网址,LABEL4是邮件

这个是直接激桥转到网址和发邮件的

我还碧铅嫌有份“邮件数据管理程序”

但是那个就大了··

Private Declare Function ShellExecute Lib “shell32.dll” Alias “ShellExecuteA” (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Private Sub Label2_Click()

Call ShellExecute(Form1.hwnd, “open”, Label2.Caption, vbNullString, vbNullString, &H0)

End Sub

Private Sub Label4_Click()

Call ShellExecute(Form1.hwnd, “悔手Open”, Label4.Caption, “”, App.Path, 1)

End Sub

楼主告诉你,vb的邮件发送接收程卜历罩序是型闹很不稳定的

可能你自己烂裤机器测试很成功,但是换了一台发3次成功1次

这也是为什么现在的qq木马都不采用邮件收信的方法了。因为不稳定

这个源码也许对你有用

发到邮件服务器上了呗,保存在服务器主机里了吧. 接收从邮件服务器接收

控制面板里的我没注意,也许是Outlook Express吧. 系统自带的邮件亩大猛收发系统. 设置各项设置? 之一次打开OE就会仿谨让你填写你迅桥的邮件信息了

关于vb 登陆stmp服务器的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。


数据运维技术 » VB编写登陆TP服务器简介 (vb 登陆stmp服务器)