估計很多人和我一樣,在使用indy的時候都會受不了眾多的bug,不得不邊使用邊修改。
近來一直使用indy來收發郵件,從d7到d2007再到d2010,後來直接從svn中檢出乙個最新版本來,讓人驚喜的是新版本中修復了一些bug,讓人沮喪的是新版本中又重新引入了一些新的bug,唉,鍛鍊人啊。
前幾天簡單看了一下python,測試了一下發現python對郵件的處理簡直簡練至極!並且接收和解碼上也勝indy很多,於是就想用python來處理郵件。但因為工程是用delphi的,所以就上網搜尋了一下,發現了pythonfordelphi,使用了一下,很不錯,於是就用python做了個解碼,然後在delphi中呼叫。
python4delphi:
入門:
噢,它竟然在google上和yahoo上都安了家:
看一下python端的**:
1import
email23
fp =
open(
"test.eml",
"r")
#開啟eml檔案
4msg
=email.message_from_file(fp) 5#
msg = email.message_from_string(str) #也可以從字串建立
6subject
=msg.get(
"subject")
#取信件頭里的subject, 也就是主題7#
下面的三行**只是為了解碼象=?gbk?q?=cf=e0=c6=ac?=這樣的subject8h
=email.header.header(subject)
9dh
=email.header.decode_header(h)
10subject
=dh[0][0]
11print
"subject:
", subject
12print
"from:
", email.utils.parseaddr(msg.get(
"from
"))[1]
#取from
13print
"to:
", email.utils.parseaddr(msg.get("to
"))[1]
#取to
1415
#迴圈信件中的每乙個mime的資料塊16i
=017textplain=''
18texthtml=''
1920
forpar
inmsg.walk():
21if
notpar.is_multipart():
#這裡要判斷是否是multipart,是的話,裡面的資料是無用的,至於為什麼可以了解mime相關知識。
22name
=par.get_param(
"name")
#如果是附件,這裡就會取出附件的檔名
23print
name
2425
ifname:
26print
'有附件'+
name
#此處略,不對附件做處理,只處理文字內容
27else:28
#不是附件,是文字內容29#
print par.get_payload(decode=true) # 解碼出文字內容,直接輸出來就可以了。
30content_type
=par.get_content_type()
31if
content_type in[
'text/plain']:
32textplain
=par.get_payload(decode
=true)
33textplain.value
=textplain
#這裡textplain.value和下面的texthtml.value在正常python中是不能正確執行的,是pytho4delphi中的物件
34if
content_type in[
'text/html']:
35texthtml
=par.get_payload(decode
=true)
36texthtml.value
=texthtml
3738
fp.close()39
好了,上面只是示例性地處理了文字內容
下面在delphi中增加兩個tpythondelphivar,分別為textplain和texthtm,然後:
1pe.execstrings(memo1.lines);
//memo1中為上面的python**,當然可以放到檔案中
2showmessage(texthtml.valueasstring);
//這時texthtml.valueasstring就是解碼後的郵件超文字內容,如果有text
/plain內容,取textplain的值即可。
好了,不要再和indy生氣了! :-)
使用python 來實現炒股
以前有這種想法,自從平時下班後自學python 開始,這種想法就越演越烈。其實筆者 也只有一年時間,經驗遠遠不足,但想著平時私下時間拿來做點啥事,因此也是這篇文章的由來。1.的策略 對於 的研究,一直想再專門寫個 論述 論 特別是這兩年量化投資盛行,基本都是在python語言基礎上進行的策略回歸。總...
使用python來登入網頁
用 python 來爬取這個網頁的一些基本資訊.首先要做的,是使用 python 來登入這個網頁,並列印出這個網頁 html 的 source code.注意,因為網頁中存在中文,為了正常顯示中文,read 完以後,我們要對讀出來的文字進行轉換,decode 成可以正常顯示中文的形式.下面我們就來試...
使用psyco來加速python程式
最近在寫乙個python的 由於要處理大量的迴圈語句,導致整個程式執行起來顯得很吃力,所以想試試psyco這個模組。使用方法 1 在自己的python 中加入import psyco psyco.full psyco.full 是對所有的函式都編譯,但是記憶體開銷也隨之增加不少,在我的專案中測試發現...