用_Pop3Top为何多数读不到QQ邮件的标题呢
请给位前辈指点一下#include <pop3.au3>
While 1
Sleep(3000)
_pop3Disconnect ()
_pop3Connect ("pop.qq.com", "用户名", "密码", 110);请填入你的邮箱pop3、用户名与密码
$start = _Pop3Stat ()
For $i = 1 To $start
$muti = _Pop3Top ($i, 2)
$bt1 = StringMid($muti,StringInStr($muti,"Subject:")+9,StringInStr($muti,"Date:")-StringInStr($muti,"Subject:")-11)
ToolTip($start&"/"&$i&" "&$bt1,20,20)
Next
WEnd
为什么新浪的好用啊 qq的就不行 你仔细分析下$muti的内容就知道了
每个邮箱可能都有一些差异 2楼的 我已测试过了 提取标题部分是对的 主要是_Pop3Stat ()大部分都读不到标题字段
当然了偶尔也能读到 但是可能性很小
不知到 是什么原因
期待高手解决啊:face (31): 本帖最后由 jiushizhu 于 2009-12-25 17:10 编辑
:face (20): 没人能解决吗 个人猜测,还是和编码有关。把邮件收下来以后就能看到邮件标题。 看来这问题很难解决啊
把邮件收下来很占cpu 如果有附件的话几乎是百分之百 继续讨论。这个跟邮箱没关系,跟收到的邮件是怎么编码的有关系。我试过自己的公司邮箱,4封邮件,有的能读取到标题(编码前的),有的读取不到。只有收取下来后,才能看到subject这个项(依旧是需要解码)。
所以对于邮件这种东西,发送客户端远远比接收客户端好写。前者无非是定义发送服务器,用户密码,方式,附件,定义编码方式就可以了。后者要考虑多种的编码方式如何正确解码的问题。 楼上的 我测试过了(QQ邮箱) 10封同样的标题(是无需转换编码的字母) 有时能读到有时读不到
飘忽不定捉摸不透 概率是1/4 :face (13):
新浪的则没问题 没发现有读不到标题的 靠,那就只能猜测背后的邮件系统有关系了。难道说新浪用exchange的,qq邮件系统是自己写的? ```````````````````````````````````````
如果跟编码有问题,那怎么才能知道他们的编码呢,难道真的是用猜出来的 不能用_pop3top,只能直接写tcp连接和接收。然后用base64解码或者utf-8。后者我还没有找到udf。面前碰到的都是BG2312和BGK的编码。utf-8的还得花时间自己调试。
另外,个人感觉pop不是很稳定的系统。经常出现登录不上去,登录上去了,循环处理邮件标题的时候,检查不定时的中断。所以要在编码里加上很多的判断条件。。。。。。考验人啊这不是。 再次修正自己的话:
pop是很稳定的系统,不稳定是因为自己写的正则有问题。多加判断@error和@extended之后代码就强壮了很多。
现在发现base64是一种很微妙的解码,比如说,现在已经发现有gb2312,gbk,gb18030前置的标题,而且发现最后的结束符在=?=,和?=都会出现。
一行就罢了,标题过长还会出现两行。
两行也就罢了,如果标题以英文开头会出现3行。
头不是一般的大。 楼上的大哥 请你实验好了再发贴
你好好看一看!好好看一看!好好看一看!$muti = _Pop3Top 返回的数据 本帖最后由 jiushizhu 于 2010-1-28 16:49 编辑
目前用此方法将就用
#include <pop3.au3>
While 1
Sleep(3000)
_pop3Disconnect ()
_pop3Connect ("pop.qq.com", "用户名", "密码", 110);请填入你的邮箱pop3、用户名与密码
$start = _Pop3Stat ()
For $i = 1 To $start
While 2
$muti= _Pop3Top ($i, 0)
If StringInStr($data,"Subject:") Then ExitLoop
Sleep(50)
WEnd
$bt1 = StringMid($muti,StringInStr($muti,"Subject:")+9,StringInStr($muti,"Date:")-StringInStr($muti,"Subject:")-11)
ToolTip($start&"/"&$i&" "&$bt1,20,20)
Next
WEnd
我在循环2内加了循环限次 万一读不到就死了 看懂你的代码了。你这样多试几次。你这样能取到的,基本上是乱码。
有些信头里居然有两次Subject:。
我现在抛弃_pop3top了,直接用tcpreceive的方式来收,然后解码。
我又碰到另外一种信头,第一行是gb2312编码,第二行是ascii编码。。。。。。。
页:
[1]
2