;需要Autohotkey 1.1+ ;thinkai@vip.qq.com 2015-03-04 ;结构 ;Mail["From"] 发件人 ;Mail["To"] 收件人 ;Mail["Subject"] 主题 ;Mail["CC"] 抄送 ;Mail["BCC"] 暗送 ;Mail["SentOn"] 发送时间 ;Mail["ReceivedTime"] 服务器接收时间 ;Mail["TextBody"] 文本正文 ;Mail["HTMLBody"] Html正文 ;Mail["AttachCount"] 附件数量 ;Mail["Attachments"][1]["name"] 附件1文件名 ;Mail["Attachments"][1]["file"] 附件1文件释放后的文件路径 ;示例: mail := ReadEmlFile("mail2.eml") msgbox, 64, 提示, % "邮件" mail["From"] "发给" mail["Subject"] "的邮件“" mail["Subject"] "”的附件已经释放到邮件目录下!" ReadEmlFile(file,attach_output_dir:=""){ Mail := [] IfNotExist % file return SplitPath, file, , dir if !dir file := A_ScriptDir "" file try { ;读取文件到二进制流 oADO := ComObjCreate("adodb.stream") oADO.Type := 1 ;二进制 oADO.Mode := 3 ;读写 oADO.Open() oADO.LoadFromFile(file) ;读取邮件 oMsg := ComObjCreate("CDO.Message") oMsg.DataSource.OpenObject(oADO, "_stream") } catch e{ ;出错 return e } oADO.Close() ;释放 Mail["From"] := oMsg.From,Mail["To"] := oMsg.To,Mail["Subject"] := oMsg.Subject Mail["CC"] := oMsg.CC,Mail["BCC"] := oMsg.BCC Mail["SentOn"] := oMsg.SentOn,Mail["ReceivedTime"] := oMsg.ReceivedTime Mail["TextBody"] := oMsg.TextBody,Mail["HTMLBody"] := oMsg.HTMLBody Mail["AttachCount"] := oMsg.Attachments.Count If !attach_output_dir SplitPath, file, , attach_output_dir IfNotExist, attach_output_dir FileCreateDir, % attach_output_dir if (Mail["AttachCount"]>0) Mail["Attachments"] := [] Loop % Mail["AttachCount"] { FileName := oMsg.Attachments[A_Index].FileName,Attachments.insert({"name":FileName,"file":attach_output_dir "" FileName}) oMsg.Attachments[A_Index].SaveToFile(attach_output_dir "" FileName) ;此处完整路径 } return Mail }