delphi调用python_Delphi使用Python来解码邮件
估计很多人和我一样,在使用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来解码邮件相关推荐
- python email模块详解_python模块之email: 电子邮件编码解码 (一、解码邮件)-阿里云开发者社区...
python自带的email模块是个很有意思的东西,它可以对邮件编码解码,用来处理邮件非常好用. 处理邮件是一个很细致的工作,尤其是解码邮件,因为它的格式变化太多了,下面先看看一个邮件的源文件: Re ...
- python模块之email: 电子邮件编码解码 (一、解码邮件)
https://yq.aliyun.com/articles/54621 python模块之email: 电子邮件编码解码 (一.解码邮件) python自带的email模块是个很有意思的东西,它可以 ...
- python email模块详解_python模块之email: 电子邮件编码解码 (一、解码邮件)
python自带的email模块是个很有意思的东西,它可以对邮件编码解码,用来处理邮件非常好用. 处理邮件是一个很细致的工作,尤其是解码邮件,因为它的格式变化太多了,下面先看看一个邮件的源文件: Re ...
- python自动下载邮件附件_Python邮件处理(收取、解码及附件下载)
之前在工作中需要用到自动查收邮件和下载附件,于是用python做了一些自动化的尝试.以下代码主要实现了两个功能,一个是下载并解码邮件正文(print_info函数),另一个是下载邮件附件(get_at ...
- python自动接收邮件_Python自动发送和收取邮件的方法
作为课代表,经常要做的两件事是:帮忙发作业和帮忙收作业,而且很多时候是通过邮件来完成的,如果手动一封一封的收取和发送就很浪费时间--人生苦短,我用Python. 直接上代码,不想了解细节原理直接拉到最 ...
- Delphi调用外部程序函数:WinExec() 和ShellExecute详解
2019独角兽企业重金招聘Python工程师标准>>> Delphi调用外部程序函数:WinExec() 和ShellExecute详解 1,WinExec(): WinExec主要 ...
- Delphi调用外部程序的集中方法
Delphi调用外部程序 WinExec主要运行EXE文件.如:WinExec('Notepad.exe Readme.txt', SW_SHOW); WinExec( lpCmdLine: LP ...
- python批量下载邮件附件
背景 由于同学每周要通过邮箱收数学建模作业,100多人给她发附件,她要一个个地点着下载. 太麻烦了,所以想用程序实现下载附件的功能. 在网上查资料后,最终实现了稍为简单的下载附件功能,代码有些细节还不 ...
- python提取邮件附件_详解python实现读取邮件数据并下载附件的实例
详解python实现读取邮件数据并下载附件的实例 实现结果图: 实现代码: #!/usr/bin/python2.7 # _*_ coding: utf-8 _*_ """ ...
- delphi 调用youtube-dl命令,下载youtube视频,原理及源代码
一.概要 1.Youtube-dl工具 强大的视频下载命令行工具Youtube-dl项目由Ricardo Garcia创建于2008年,源代码由Python编写,托管在GitHub上, 最初仅支持Yo ...
最新文章
- java mqtt paho_使用eclipse paho在java端实现MQTT消息的收发(客户端与服务端实例)...
- caffe修改hdf5的datalayer
- cmd导出服务器文件大小,通过powershell或者cmd导出单个OU计算机信息
- 在SAP CAL(Cloud Application Library)上搭建ABAP HANA系统
- html:(1) 登录界面
- 不做冤大头!大数据“杀熟”最高罚5000万!
- 谁是真凶?《CSI:犯罪现场调查》正帮助AI提高断案能力
- 电商网站模板_微购物商城网站建设:要做好这6点!
- 【车间调度】基于matlab免疫遗传算法求解多目标生产调度问题【含Matlab源码 710期】
- C# 使用Magick.NET进行图片格式转换,修改尺寸(.ico .jpg .png .gif .bmp),解决png转jpg透明变黑底问题
- 华为手机隐藏指令的5个代码
- 神经网络模型的基本原理,神经元网络算法的思想
- java反向查找dns_windows – 反向DNS查找
- 3D刷脸支付推动新零售行业发展
- Java--反编译软件
- 深圳租房信息聚类与回归分析
- 几款超好用的PDF转换软件推荐
- python爬取考研成绩什么时候出来_Python 爬取揭秘,你的考研调剂对手就有谁?...
- 《太空帝国 4》(Space Empires IV)以及 xx-Mod 英文版 中文版 TDM Mod 英文版 中文版
- 申请评分卡模型数据预处理
热门文章
- http://blog.csdn.net/flyingscv/archive/2008/05/03/2371153.aspx
- 3.分布式服务架构:原理、设计与实战 --- 服务化系统容量评估和性能保障
- 15.深入分布式缓存:从原理到实践 --- 同程凤凰缓存系统基于Redis的设计与实践
- 3.微服务设计 --- 如何建模服务
- 7.上传自己的代码到 composer
- 3.卷2(进程间通信)---System V IPC
- 24.root, alias
- 1. SOAP 简介
- 第008讲 div css开山篇
- 4. laravel 路由(1)