我用通过socks5代理访问E-mail服务器,像foxmail一样
由于不清楚socks5的协议细则(查过RFC,未果)所以用sniffer监视foxmail的网络数据包,通过分析和模拟,已经可以针对某个特定的邮件服务器进行通讯。
过程是这样的
通过winsock控件先和socks5代理服务器建立连接,然后
1.发送:05 01 00 (注:ASCII码16进制,其余为转换过的字符串)
2.返回:05 00
3.发送:05 01 00 03 0C pop3.126.com 00 6E
4.返回:05 00 00 01 D2 53 CA B0 9 C7
5.返回:+OK Welcome to coremail Mail Pop3 Server (126com[030901])
6.发送:USER tuzi59421
7.返回+OK core mail
8.发送PASS 5211314
9.返回+OK 0 message(s) [0 byte(s)]
...以后就是SMTP的通讯内容了
现在有个疑问,就是第三步pop3.126.com 字符串前的 0C 这个标志,我发现每个不同的邮件服务器这个标志是不同的,我自己算不出来,用其他的数字代替就出错了。小弟比较笨,问题是出在不知道怎样通过给代理服务器发指令连接邮件服务器造成的,所以请高手替我解决这个问题,或者告诉我其他的方法通过代理服务器连接邮件服务器也行,CSDN的帖子我翻了好几遍了也没找到合适的答案。
由于不清楚socks5的协议细则(查过RFC,未果)所以用sniffer监视foxmail的网络数据包,通过分析和模拟,已经可以针对某个特定的邮件服务器进行通讯。
过程是这样的
通过winsock控件先和socks5代理服务器建立连接,然后
1.发送:05 01 00 (注:ASCII码16进制,其余为转换过的字符串)
2.返回:05 00
3.发送:05 01 00 03 0C pop3.126.com 00 6E
4.返回:05 00 00 01 D2 53 CA B0 9 C7
5.返回:+OK Welcome to coremail Mail Pop3 Server (126com[030901])
6.发送:USER tuzi59421
7.返回+OK core mail
8.发送PASS 5211314
9.返回+OK 0 message(s) [0 byte(s)]
...以后就是SMTP的通讯内容了
现在有个疑问,就是第三步pop3.126.com 字符串前的 0C 这个标志,我发现每个不同的邮件服务器这个标志是不同的,我自己算不出来,用其他的数字代替就出错了。小弟比较笨,问题是出在不知道怎样通过给代理服务器发指令连接邮件服务器造成的,所以请高手替我解决这个问题,或者告诉我其他的方法通过代理服务器连接邮件服务器也行,CSDN的帖子我翻了好几遍了也没找到合适的答案。
hex(len("pop3.126.com"))=0C
pop3.sina100.com=10
pop.163.com=11
pop.yeah.net=0c
pop3.126.com=0c这个问题解决了,supergreenbean(超级绿豆) 谢谢你啊,一会给你分,我还有一些问题,就是怎样通过winsock控件接收和发送邮件附件(一定是附件,不是编码在邮件里的文本),请大家帮帮忙
哪里有这方面的资料?
'該函數用于构造信件內容
Private Sub GenMail(bAttachment As Boolean)
Dim fnum As Integer, FAttin As Integer
Dim strLine As String
strSendName = txtSName.Text
strReceiveName = txtRName.Text
strFromMail = txtFrom.Text
strToMail = txtTo.Text
m_Date = Format(Date, "Ddd") & ", " & Format(Date, "dd Mmm YYYY") & " " & Format(Time, "hh:mm:ss") & "" & " -0600"
strSubject = txtSubject.Text
strContent = txtContent.Text
fnum = FreeFile()
Open App.Path & "\mail.tmp" For Output As fnum
'构造信件標題字段
Print #fnum, "From:" & Chr(32) & strSendName
Print #fnum, "Date:" & Chr(32) & m_Date
Print #fnum, "X-Mailer: BigAnt Smtp Mailer V1.0"
Print #fnum, "To:" & Chr(32) & strReceiveName
Print #fnum, "Subject:" & Chr(32) & strSubject
If bAttachment = False Then
Print #fnum, ""
Print #fnum, strContent
Exit Sub
End If
Print #fnum, "MIME-Version: 1.0"
Print #fnum, "Content-type:multipart/mixed;"
Print #fnum, " boundary =""----=_NextPart_000_000A_01BF9F1A"""
Print #fnum, ""
'書寫信件的正文內容
Print #fnum, "--" & "----=_NextPart_000_000A_01BF9F1A"
Print #fnum, "Content-Type: text/plain;"
Print #fnum, " Charset = ""gb2312"""
Print #fnum, "Content-Transfer-Encoding: 8bit"
Print #fnum, ""
Print #fnum, strContent
'附件內
Dim i As Integer
For i = 0 To cobAtt.ListCount - 1
Base64Encode cobAtt.List(i), App.Path & "\attachment" & i & ".tmp"
Print #fnum, "--" & "----=_NextPart_000_000A_01BF9F1A"
Print #fnum, "Content-Type: Application/octet-stream"
Print #fnum, " name=" & cobAtt.List(i)
Print #fnum, "Content-Transfer-Encoding: base64"
Print #fnum, "Content-Disposition: attachment;"
Print #fnum, " FileName=" & cobAtt.List(i)
Print #fnum, ""
FAttin = FreeFile
Open App.Path & "\attachment" & i & ".tmp" For Input As #FAttin
While Not EOF(FAttin)
Line Input #FAttin, strLine
Print #fnum, strLine
Wend
Close FAttin
Next i
Print #fnum, "--" & "----=_NextPart_000_000A_01BF9F1A" & "--"
Close fnum
End Sub
接收呢?谁有现成的让我参考一下,自己写时间来不及了。