估计很多人和我一样,在使用Indy的时候都会受不了众多的Bug,不得不边使用边修改。

近来一直使用Indy来收发邮件,从D7到D2007再到D2010,后来直接从SVN中检出一个最新版本来,让人惊喜的是新版本中修复了一些Bug,让人沮丧的是新版本中又重新引入了一些新的Bug,唉,锻炼人啊。

前几天简单看了一下Python,测试了一下发现Python对邮件的处理简直简练至极!并且接收和解码上也胜Indy很多,于是就想用Python来处理邮件。但因为工程是用Delphi的,所以就上网搜索了一下,发现了PythonForDelphi,使用了一下,很不错,于是就用Python做了个解码,然后在Delphi中调用。

先介绍一下相关资源:

Python4Delphi:

入门:

噢,它竟然在google上和yahoo上都安了家:

看一下Python端的代码:

1 importemail2 3 fp=open("Test.eml","r")#打开eml文件4 msg=email.message_from_file(fp)5 #msg = email.message_from_string(str) #也可以从字符串创建6 subject=msg.get("subject")#取信件头里的subject, 也就是主题7 #下面的三行代码只是为了解码象=?gbk?Q?=CF=E0=C6=AC?=这样的subject8 h=email.Header.Header(subject)9 dh=email.Header.decode_header(h)10 subject=dh[0][0]11 print"subject:", subject12 print"from:", email.utils.parseaddr(msg.get("from"))[1]#取from13 print"to:", email.utils.parseaddr(msg.get("to"))[1]#取to14 15 #循环信件中的每一个mime的数据块16 i=017 textplain=''18 texthtml=''19 20 forparinmsg.walk():21 ifnotpar.is_multipart():#这里要判断是否是multipart,是的话,里面的数据是无用的,至于为什么可以了解mime相关知识。22 name=par.get_param("name")#如果是附件,这里就会取出附件的文件名23 printname24 25 ifname:26 print'有附件'+name#此处略,不对附件做处理,只处理文本内容27 else:28 #不是附件,是文本内容29 #print par.get_payload(decode=True) # 解码出文本内容,直接输出来就可以了。30 content_type=par.get_content_type()31 ifcontent_typein['text/plain']:32 textplain=par.get_payload(decode=True)33 TextPlain.Value=textplain#这里TextPlain.Value和下面的TextHtml.Value在正常Python中是不能正确执行的,是Pytho4Delphi中的对象34 ifcontent_typein['text/html']:35 texthtml=par.get_payload(decode=True)36 TextHtml.Value=texthtml37 38 fp.close()39

好了,上面只是示例性地处理了文本内容

下面在Delphi中增加两个TPythonDelphiVar,分别为TextPlain和TextHtm,然后:

1 PE.ExecStrings(Memo1.Lines);//Memo1中为上面的Python代码,当然可以放到文件中2 ShowMessage(TextHtml.ValueAsString);//这时TextHtml.ValueAsString就是解码后的邮件超文本内容,如果有Text/plain内容,取TextPlain的值即可。

好了,不要再和Indy生气了!  :-)

delphi调用python_Delphi使用Python来解码邮件相关推荐

  1. python email模块详解_python模块之email: 电子邮件编码解码 (一、解码邮件)-阿里云开发者社区...

    python自带的email模块是个很有意思的东西,它可以对邮件编码解码,用来处理邮件非常好用. 处理邮件是一个很细致的工作,尤其是解码邮件,因为它的格式变化太多了,下面先看看一个邮件的源文件: Re ...

  2. python模块之email: 电子邮件编码解码 (一、解码邮件)

    https://yq.aliyun.com/articles/54621 python模块之email: 电子邮件编码解码 (一.解码邮件) python自带的email模块是个很有意思的东西,它可以 ...

  3. python email模块详解_python模块之email: 电子邮件编码解码 (一、解码邮件)

    python自带的email模块是个很有意思的东西,它可以对邮件编码解码,用来处理邮件非常好用. 处理邮件是一个很细致的工作,尤其是解码邮件,因为它的格式变化太多了,下面先看看一个邮件的源文件: Re ...

  4. python自动下载邮件附件_Python邮件处理(收取、解码及附件下载)

    之前在工作中需要用到自动查收邮件和下载附件,于是用python做了一些自动化的尝试.以下代码主要实现了两个功能,一个是下载并解码邮件正文(print_info函数),另一个是下载邮件附件(get_at ...

  5. python自动接收邮件_Python自动发送和收取邮件的方法

    作为课代表,经常要做的两件事是:帮忙发作业和帮忙收作业,而且很多时候是通过邮件来完成的,如果手动一封一封的收取和发送就很浪费时间--人生苦短,我用Python. 直接上代码,不想了解细节原理直接拉到最 ...

  6. Delphi调用外部程序函数:WinExec() 和ShellExecute详解

    2019独角兽企业重金招聘Python工程师标准>>> Delphi调用外部程序函数:WinExec() 和ShellExecute详解 1,WinExec(): WinExec主要 ...

  7. Delphi调用外部程序的集中方法

    Delphi调用外部程序 WinExec主要运行EXE文件.如:WinExec('Notepad.exe Readme.txt', SW_SHOW); WinExec(   lpCmdLine: LP ...

  8. python批量下载邮件附件

    背景 由于同学每周要通过邮箱收数学建模作业,100多人给她发附件,她要一个个地点着下载. 太麻烦了,所以想用程序实现下载附件的功能. 在网上查资料后,最终实现了稍为简单的下载附件功能,代码有些细节还不 ...

  9. python提取邮件附件_详解python实现读取邮件数据并下载附件的实例

    详解python实现读取邮件数据并下载附件的实例 实现结果图: 实现代码: #!/usr/bin/python2.7 # _*_ coding: utf-8 _*_ """ ...

  10. delphi 调用youtube-dl命令,下载youtube视频,原理及源代码

    一.概要 1.Youtube-dl工具 强大的视频下载命令行工具Youtube-dl项目由Ricardo Garcia创建于2008年,源代码由Python编写,托管在GitHub上, 最初仅支持Yo ...

最新文章

  1. java mqtt paho_使用eclipse paho在java端实现MQTT消息的收发(客户端与服务端实例)...
  2. caffe修改hdf5的datalayer
  3. cmd导出服务器文件大小,通过powershell或者cmd导出单个OU计算机信息
  4. 在SAP CAL(Cloud Application Library)上搭建ABAP HANA系统
  5. html:(1) 登录界面
  6. 不做冤大头!大数据“杀熟”最高罚5000万!
  7. 谁是真凶?《CSI:犯罪现场调查》正帮助AI提高断案能力
  8. 电商网站模板_微购物商城网站建设:要做好这6点!
  9. 【车间调度】基于matlab免疫遗传算法求解多目标生产调度问题【含Matlab源码 710期】
  10. C# 使用Magick.NET进行图片格式转换,修改尺寸(.ico .jpg .png .gif .bmp),解决png转jpg透明变黑底问题
  11. 华为手机隐藏指令的5个代码
  12. 神经网络模型的基本原理,神经元网络算法的思想
  13. java反向查找dns_windows – 反向DNS查找
  14. 3D刷脸支付推动新零售行业发展
  15. Java--反编译软件
  16. 深圳租房信息聚类与回归分析
  17. 几款超好用的PDF转换软件推荐
  18. python爬取考研成绩什么时候出来_Python 爬取揭秘,你的考研调剂对手就有谁?...
  19. 《太空帝国 4》(Space Empires IV)以及 xx-Mod 英文版 中文版 TDM Mod 英文版 中文版
  20. 申请评分卡模型数据预处理

热门文章

  1. http://blog.csdn.net/flyingscv/archive/2008/05/03/2371153.aspx
  2. 3.分布式服务架构:原理、设计与实战 --- 服务化系统容量评估和性能保障
  3. 15.深入分布式缓存:从原理到实践 --- 同程凤凰缓存系统基于Redis的设计与实践
  4. 3.微服务设计 --- 如何建模服务
  5. 7.上传自己的代码到 composer
  6. 3.卷2(进程间通信)---System V IPC
  7. 24.root, alias
  8. 1. SOAP 简介
  9. 第008讲 div css开山篇
  10. 4. laravel 路由(1)