xzxnovice 发表于 2011-1-6 17:18:36

autoit+jmail.dll pop3 收邮件 求完善(有码)

本帖最后由 xzxnovice 于 2011-1-10 08:34 编辑

RunWait(@ComSpec & " /c " & 'regsvr32 jmail.dll /s', "", @SW_HIDE)

_JmailGet("用户名", "密码", "pop.126.com", 110)
Func _JmailGet($Username, $Password, $PopServer, $port)
        $popMail = ObjCreate("JMail.POP3") ;建立收邮件对象
        $popMail.connect($Username, $Password, $PopServer)

        If 0 < $popMail.Count Then
                For $i = 1 To $popMail.Count
                        ;取得一条邮件信息
                       
                        $mailMessage = $popMail.Messages.item($i)
;~                         $mailMessage=$mailMessages[$i]
                        ;取得该邮件的附件集合
                        $atts = $mailMessage.Attachments

                        ;设置邮件的编码方式
                        $mailMessage.Charset = "GB2312"

                        ;设置邮件的附件编码方式
                        $mailMessage.Encoding = "Base64"

                        ;是否将信头编码成iso-8859-1字符集
                        $mailMessage.ISOEncodeHeaders = False

                        ;邮件的优先级
                        $txtpriority = $mailMessage.Priority

                        ;邮件的发送人的信箱地址
                        $txtSendMail = $mailMessage.From

                        ;邮件的发送人
                        $txtSender = $mailMessage.FromName

                        ;邮件主题
                        $txtSubject = $mailMessage.Subject

                        ;邮件内容
                        $txtBody = $mailMessage.Body

                        ;邮件大小
                        $txtSize = $mailMessage.Size
                        ConsoleWriteError($txtSendMail & @CRLF & $txtSubject & @CRLF)
                       
                        If $atts.count > 0 Then
                                ConsoleWriteError("有附件"&$atts.count &@CRLF)
                                For $j=0 To $atts.count-1
                               
                                        $att =$atts.item($j)
                                        ConsoleWriteError("附件名:"&$att.Name&@CRLF)
                                        $att.SaveToFile("e:\attFile\"& $i & @HOUR & @MIN &@SEC & @MSEC)
                                next
                        EndIf
                       

                Next

                $att = 0

        Else
               
                ConsoleWriteError("没有新邮件!")
               
        EndIf
        ;$popMail.DeleteMessages() 删除服务器上的邮件
        $popMail.Disconnect()
        $popMail = 0
       
EndFunc   ;==>_JmailGet
测试用,代码比较简单,随便 看看
暂发现问题如下
1 返回的附件名称att.Name,是经编码的(中文会,英文不会,如=?GBK?B?0MK9qM7Esb7OxLW1LnR4dA==?=,知道怎样转过来,求解。。
2 $popMail.connect 如果连接失败时,不会返回错误信息,而是au3直接出错,提 示 ^error能不能捕捉这个异常 ..
3还有更多。。还在在研究

4 网上很多jmail.dll免费版没有pop3功能,所以很多人说用不了。提供一个100%可以用的,收点零花钱 1块

Jmail 4.4 专业版

xzxnovice 发表于 2011-1-6 23:50:40

自顶,还没有人回复!!自己解决了=?GBK?B 的解码,用BinaryToString(_Base64Decode($name))
但还遇到下面QP方式编码的不知怎样解。
=?GBK?Q?=D0=C2=BD=A8=CE=C4=B1=BE=CE=C4=B5=B5_(2).txt?=

83265358 发表于 2011-1-7 02:32:01

jmail是什么版本的?

xzxnovice 发表于 2011-1-7 08:33:19

本帖最后由 xzxnovice 于 2011-1-7 23:46 编辑

现在换个4.4专业版

83265358 发表于 2011-1-8 01:40:49

回复 4# xzxnovice


    要不要钱的?(要不要注册?)

lxz 发表于 2011-1-8 08:59:59

代码收下,谢谢....

republican 发表于 2011-1-8 09:44:32

本帖最后由 republican 于 2011-1-8 09:52 编辑

论坛有Pop3的UDF,你可以尝试一下。

解码规则参考Base64的编码方式。

=?GBK?B?0MK9qM7Esb7OxLW1LnR4dA==?=   >> 新建文本文档.txt

QP就是二进制编码,所以解码方式既简单,又麻烦,因为不清楚其编码规则究竟是2位还是3位,不过对于中文来说,一般是3位。
=?GBK?Q?=D0=C2=BD=A8=CE=C4=B1=BE=CE=C4=B5=B5_(2).txt?=   >> 新建文本文档_(2).txt

qq342252004 发表于 2011-1-8 11:00:14

pop3 收邮件 终于等到了!

qq342252004 发表于 2011-1-8 11:03:42

jmail.dll 4.5的可以用吗?

powernet 发表于 2011-1-8 15:35:16

收藏乐。。。。。。。。。。。。

powernet 发表于 2011-1-8 15:48:09

......................

xzxnovice 发表于 2011-1-9 23:15:31

回复 5# 83265358

网上下载的,只测试了一下能用,长期使用不知道会不会要注册。。之前发的那个 4.0个人版 ,朋友一直在用没问题。。

xzxnovice 发表于 2011-1-9 23:22:33

回复 7# republican

pop3 udf不及jmail好用吧。。。jmail把大部分问题都处理好了。    只是附件名称没去处理,实在费解。

不同服务器使用的编码又不同,分gbk gb1312 utf-8等,还分Q B两方式,我从网上找了个c# 的 解码算法,转成autoit了,基本能用一下。

xzxnovice 发表于 2011-1-9 23:22:56

回复 9# qq342252004


   没找到 4.5 的专业版。。

xzxnovice 发表于 2011-1-9 23:26:06

本帖最后由 xzxnovice 于 2011-1-9 23:27 编辑

现在最大问题还是问题 2,比如登陆密码错的话,autoit直接出错了,没法处理这个错误啊。。
页: [1] 2
查看完整版本: autoit+jmail.dll pop3 收邮件 求完善(有码)