找回密码
 加入
搜索
查看: 10704|回复: 18

[网络通信] autoit+jmail.dll pop3 收邮件 求完善(有码)

  [复制链接]
发表于 2011-1-6 17:18:36 | 显示全部楼层 |阅读模式
本帖最后由 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 专业版

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 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?=
发表于 2011-1-7 02:32:01 | 显示全部楼层
jmail是什么版本的?
 楼主| 发表于 2011-1-7 08:33:19 | 显示全部楼层
本帖最后由 xzxnovice 于 2011-1-7 23:46 编辑

现在换个4.4专业版

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2011-1-8 01:40:49 | 显示全部楼层
回复 4# xzxnovice


    要不要钱的?(要不要注册?)
发表于 2011-1-8 08:59:59 | 显示全部楼层
代码收下,谢谢....
发表于 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
发表于 2011-1-8 11:00:14 | 显示全部楼层
pop3 收邮件 终于等到了!
发表于 2011-1-8 11:03:42 | 显示全部楼层
jmail.dll 4.5的可以用吗?
发表于 2011-1-8 15:35:16 | 显示全部楼层
收藏乐。。。。。。。。。。。。
发表于 2011-1-8 15:48:09 | 显示全部楼层
......................

评分

参与人数 1金钱 -30 收起 理由
hzxymkb -30 恶意灌水,扣分警告!

查看全部评分

 楼主| 发表于 2011-1-9 23:15:31 | 显示全部楼层
回复 5# 83265358

网上下载的,只测试了一下能用,长期使用不知道会不会要注册。。之前发的那个 4.0个人版 ,朋友一直在用没问题。。
 楼主| 发表于 2011-1-9 23:22:33 | 显示全部楼层
回复 7# republican

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

不同服务器使用的编码又不同,分gbk gb1312 utf-8等,还分Q B两方式,我从网上找了个c# 的 解码算法,转成autoit了,基本能用一下。
 楼主| 发表于 2011-1-9 23:22:56 | 显示全部楼层
回复 9# qq342252004


   没找到 4.5 的专业版。。
 楼主| 发表于 2011-1-9 23:26:06 | 显示全部楼层
本帖最后由 xzxnovice 于 2011-1-9 23:27 编辑

现在最大问题还是问题 2  ,比如登陆密码错的话,autoit直接出错了,没法处理这个错误啊。。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-15 20:22 , Processed in 0.080470 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表