本帖最后由 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 专业版
|