收邮件无法调试的故障

时间:2022-06-01 19:27:11
用delphi7的TIDPOP3收邮件:
    Bool := IDpop3.RetrieveHeader(i,AIDmsg) ;
    if Bool then  ...

当读到类似以下邮件头信息时报错:Invalid argument to date encode, 并且Bool无值并报错"'(' expected but end of file found",哪位朋友可以帮忙解决一下??

From:  搜狐商城
Date: 31 oct 2003 14:29:45 GMT
Subject: 搜狐商城购物看大片  赠《黑客帝国III》电影票 
Mime-Version: 1.0
Content-Type: text/html
Content-Transfer-Encoding: 7bit
Status: RO
X-UIDL: heike.eml.031104155424-20031104-162548

其它大多邮件收发正常!

7 个解决方案

#1


我想大概是由于这些广告邮件为了不被用户拒绝,采用了不同于一般邮件的格式,导致RetrieveHeader时不能取到正常格式而报错。有没有朋友了解这方面的情况,给点指示,如果属实有用,保证给分。也说声谢谢!

#2


或者解决一下这个问题:有的邮件标题显示不了中文,诸如
Subject: =?GB2312?Q?Fw: =BE=A2=B1=AC=CA=D6=BB=FA=D2=BB=B0=D9=D4=AA=C6=F0?=,有的又可以显示,有的邮件没有Message_ID,有的还有X-UIDL,太多问题不清楚,请高手指教,100分,不另开贴了。

#3


1 你可以把这类邮件头修改成正确的邮件头,就应该可以显示了,

2 有些邮件发送的时候,没有对subject进行base64编码,
  就比如 Subject: 搜狐商城购物看大片  赠《黑客帝国III》电影票 
  这样的
  但是有些,就编码了,如Subject: =?GB2312?Q?Fw:    =BE=A2=B1=AC=CA=D6=BB=FA=D2=BB=B0=D9=D4=AA=C6=F0?=
  你需要判断是否编码了,然后进行解码,就能够正常显示了
希望能对你解决问题有所帮助。

#4


paliang:邮件头是保存在邮件服务器上的,我不能修改,只能取回来后重新解码,我要找的就是delphi的解码方法。谢谢你的参与。

#5


你收邮件的时候是收到你的本地的,邮件其实是一个文件,你可以修改
我的意思是你把收到的邮件重新整理成可以正常显示的东西,解码用iddecodermime
关键是判断是否要解码,

#6


paliang:解码用iddecodermime,因为开始找不到解码方法,我也才找到,但还是可以给你部分分。因为解码有好几种格式,你知不知道如何判断一段乱码是什么类型的格式?目前我用的方法有些不科学。另外有的邮件没有Message_ID,有的有,有的还有X-UIDL,可否解释一下如何知道一封邮件收到过没有?谢谢

#7


目前的邮件编码基本上是mime邮件,都是base64编码,所以解码也是用base64解码;
不过也有一些不是mime邮件,=?GB2312?Q?Fw: =BE=A2=B1=AC=CA=D6=BB=FA=D2=BB=B0=D9=D4=AA=C6=F0?=
这样的都是mime,你也可以在google里面搜索mime,会有些不错的东西的。
邮件头你可以自己随便改的,这句话我不想再重复了,你可以根据你的要求修改你收到的
邮件,那么就都可以正常显示了。

那个x-uidl 是发邮件的人自己定义的邮件头(可能),你可以看看outlook和foxmail发的邮件是什么样的格式的。所以所有的东西你都可以控制。

我还没有做过收邮件,所以无法回答你的问题,加上这个问题已经不是原来的问题了:)

分想给多少就看着办吧,我也是菜鸟,嘎嘎,不过还有8000多分:)

#1


我想大概是由于这些广告邮件为了不被用户拒绝,采用了不同于一般邮件的格式,导致RetrieveHeader时不能取到正常格式而报错。有没有朋友了解这方面的情况,给点指示,如果属实有用,保证给分。也说声谢谢!

#2


或者解决一下这个问题:有的邮件标题显示不了中文,诸如
Subject: =?GB2312?Q?Fw: =BE=A2=B1=AC=CA=D6=BB=FA=D2=BB=B0=D9=D4=AA=C6=F0?=,有的又可以显示,有的邮件没有Message_ID,有的还有X-UIDL,太多问题不清楚,请高手指教,100分,不另开贴了。

#3


1 你可以把这类邮件头修改成正确的邮件头,就应该可以显示了,

2 有些邮件发送的时候,没有对subject进行base64编码,
  就比如 Subject: 搜狐商城购物看大片  赠《黑客帝国III》电影票 
  这样的
  但是有些,就编码了,如Subject: =?GB2312?Q?Fw:    =BE=A2=B1=AC=CA=D6=BB=FA=D2=BB=B0=D9=D4=AA=C6=F0?=
  你需要判断是否编码了,然后进行解码,就能够正常显示了
希望能对你解决问题有所帮助。

#4


paliang:邮件头是保存在邮件服务器上的,我不能修改,只能取回来后重新解码,我要找的就是delphi的解码方法。谢谢你的参与。

#5


你收邮件的时候是收到你的本地的,邮件其实是一个文件,你可以修改
我的意思是你把收到的邮件重新整理成可以正常显示的东西,解码用iddecodermime
关键是判断是否要解码,

#6


paliang:解码用iddecodermime,因为开始找不到解码方法,我也才找到,但还是可以给你部分分。因为解码有好几种格式,你知不知道如何判断一段乱码是什么类型的格式?目前我用的方法有些不科学。另外有的邮件没有Message_ID,有的有,有的还有X-UIDL,可否解释一下如何知道一封邮件收到过没有?谢谢

#7


目前的邮件编码基本上是mime邮件,都是base64编码,所以解码也是用base64解码;
不过也有一些不是mime邮件,=?GB2312?Q?Fw: =BE=A2=B1=AC=CA=D6=BB=FA=D2=BB=B0=D9=D4=AA=C6=F0?=
这样的都是mime,你也可以在google里面搜索mime,会有些不错的东西的。
邮件头你可以自己随便改的,这句话我不想再重复了,你可以根据你的要求修改你收到的
邮件,那么就都可以正常显示了。

那个x-uidl 是发邮件的人自己定义的邮件头(可能),你可以看看outlook和foxmail发的邮件是什么样的格式的。所以所有的东西你都可以控制。

我还没有做过收邮件,所以无法回答你的问题,加上这个问题已经不是原来的问题了:)

分想给多少就看着办吧,我也是菜鸟,嘎嘎,不过还有8000多分:)