請問Delphi7使用IdPOP3(Indy9)下載郵件後,怎樣處理亂碼(MIME)? |
尚未結案
|
nnn0918k
一般會員 發表:12 回覆:33 積分:14 註冊:2003-05-12 發送簡訊給我 |
我用Delphi7 Indy9寫POP3收信軟體,其中收信部分如下,
可是郵件下載後,有很多亂碼(MIME的)如:Subject(主旨)、From(寄件者)。
請問怎樣處理呢?
使用IdDecoderMIME/IdMessageDecoderMIME是否能解決呢? 怎樣使用?(重點= =)
或者有其他方法?
最好能用我下面的程式碼示範..謝謝! //---
IdPOP3.Connect; StatusBar.SimpleText := '正在檢查新郵件..';
l_Msgs := IdPOP3.CheckMessages;
StatusBar.SimpleText := '郵件伺服器裡有 ' inttostr(l_Msgs) ' 封新郵件。'; for i_Msg := 1 to l_Msgs
do begin
IdMsg.Clear; StatusBar.SimpleText := '正在下載郵件' inttostr(i_Msg) '/' inttostr(l_Msgs) '..';
l_MsgLen := IdPOP3.RetrieveMsgSize(i_Msg);
IdPOP3.Retrieve(i_Msg,IdMsg); lv_Msg := lv_Mailbox.Items.Add;
lv_Msg.Caption := IdMsg.From.Text;
lv_Msg.SubItems.Add(IdMsg.Subject);
lv_Msg.SubItems.Add(FormatDateTime('yyyy/mm/dd hh:mm:ss', IdMsg.Date));
lv_Msg.SubItems.Add(inttostr(l_MsgLen)); end;
IdPOP3.Disconnect;
//---
//使用的元件/變數
IdPOP3: TIdPOP3;
lv_Mailbox: TListView;
StatusBar: TStatusBar;
IdMsg: TIdMessage; l_Msgs : Integer;
i_Msg : Integer;
lv_Msg: TListItem;
l_MsgLen: Integer;
//--- 火舞精靈 - 蘇
|
jackkcg
站務副站長 發表:891 回覆:1050 積分:848 註冊:2002-03-23 發送簡訊給我 |
原本的查詢資料 因為並無幫助 更會造成錯誤的誤導示範 所以庵只有以自行刪除表示 抱歉 抱歉 *********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈
------
********************************************************** 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind |
qoo1234
版主 發表:256 回覆:1167 積分:659 註冊:2003-02-24 發送簡訊給我 |
TNMUUProcessor的使用~~僅共參考 var inStream,outStream:TFileStream;
begin
inStream:=TFileStream.create(infile.txt,fmOpenRead);
outStream:=TFileStream(outfile.txt,fmCreate);
NMUUE.Method:=uuCode;{UUEncode/Decode}
//NMUUE.Method:=uuMIME;{MIME}
NMUUE.InputStream:=InStream;
NMUUE.OutputStream:=OutStream;
NMUUE.Encode;{編碼處理}
//NMUUE.Decode;{解碼處理}
inStream.free;
outStream.free;
end; 發表是最好的記憶!
|
nnn0918k
一般會員 發表:12 回覆:33 積分:14 註冊:2003-05-12 發送簡訊給我 |
引言: 你參考看看 請多多使用 搜索文章 [推薦] MIME 和 BASE64 編碼/解碼程序代碼 http://delphi.ktop.com.tw/topic.php?topic_id=19939 【Delphi】【問題】關於 Indy 的 client-side IdPOP3 使用問題 http://delphi.ktop.com.tw/topic.php?topic_id=20737 【問題】以telnet直接取得郵件內容的實作 http://delphi.ktop.com.tw/topic.php?topic_id=27115 【問題】誰用過IDSMTP發送郵件?請進來一下. http://delphi.ktop.com.tw/topic.php?topic_id=20748 【Delphi】【發表】[VCL Howto 投稿] Indy 9.0.10 TIdSMTP & TIdMessage http://delphi.ktop.com.tw/topic.php?topic_id=20961 【Delphi】【發表】Indy E_mail小精靈word部分 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=21399 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=21398 【轉貼】解碼mime郵件的代碼 http://delphi.ktop.com.tw/topic.php?topic_id=22408 【問題】有什么构件可以解析MIME http://delphi.ktop.com.tw/topic.php?topic_id=28343 ********************************************************* 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind to make knowledge together! 希望能大家敞開心胸,將知識寶庫結合一起上面那些我都看過了.. 沒半個有用的呀QQ 火舞精靈 - 蘇 |
jackkcg
站務副站長 發表:891 回覆:1050 積分:848 註冊:2002-03-23 發送簡訊給我 |
上面那些我都看過了..
沒半個有用的呀QQ 火舞精靈 - 蘇
是這樣子ㄚ 抱歉抱歉 請原諒 耽誤你寶貴的時間 也造成你的誤導 看來 庵還是隱修一下 練練再來 *********************************************************
哈哈&兵燹
最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知
K.表Knowlege 知識,就是本站的標語:Open our mind to make knowledge together!
希望能大家敞開心胸,將知識寶庫結合一起
------
********************************************************** 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind |
nnn0918k
一般會員 發表:12 回覆:33 積分:14 註冊:2003-05-12 發送簡訊給我 |
引言: 上面那些我都看過了.. 沒半個有用的呀QQ 火舞精靈 - 蘇 是這樣子ㄚ 抱歉抱歉 請原諒 耽誤你寶貴的時間 也造成你的誤導 看來 庵還是隱修一下 練練再來 ********************************************************* 哈哈&兵燹 最會的2大絕招 這個不會與那個也不會 哈哈哈 粉好 Delphi K.Top的K.Top分兩個字解釋Top代表尖端的意思,希望本討論區能提供Delphi的尖端新知 K.表Knowlege 知識,就是本站的標語:Open our mind to make knowledge together! 希望能大家敞開心胸,將知識寶庫結合一起我還是很感謝你的說QQ.. 只要有心幫我,我都很感謝的..c 那個好像是BASE64編碼耶.. 據說..IdDecoderMIME..就是專門解這個的.. 來去試= =.. 我是新手QQ.. 火舞精靈 - 蘇 |
nnn0918k
一般會員 發表:12 回覆:33 積分:14 註冊:2003-05-12 發送簡訊給我 |
終於試出來了~"~
可以直接這樣子用..
Caption := Base64Decode(IdMessage.From.Text);
Caption := Base64Decode(IdMessage.Subject.Text);
以下是自己寫的,利用Indy9內建De/EncoderMIME解碼.. //------------------------------------------------------------------------------
//Base64Decode
//------------------------------------------------------------------------------
function TMainForm.Base64Decode(strInput : string) : string;
var
strDecode : string;
posStart: Integer;
posEnd : Integer;
begin
while pos('=?big5?b?',lowercase(strInput)) > 0 do
begin
try
posStart := pos('=?big5?b?',lowercase(strInput));
posEnd := pos('?=',lowercase(strInput));
strDecode := strDecode copy(strInput,1,posStart-1) IdDeMIME.DecodeString(copy(strInput,posStart 9,posEnd-posStart-9));
strInput := copy(strInput,posEnd 2,length(strInput)-posEnd-1);
finally
Application.ProcessMessages;
end;
end;
strDecode := strDecode strInput;
result := strDecode;
end; //------------------------------------------------------------------------------
//Base64Encode
//------------------------------------------------------------------------------
function TMainForm.Base64Encode(strInput : string) : string;
var
strEncode : string;
begin
strEncode := IdEnMIME.EncodeString(strInput);
result := strEncode;
end; //------------------------------------------------------------------------------
PS.
IdDeMIME是IdDecoderMIME
IdEnMIME是IdEncoderMIME 火舞精靈 - 蘇
|
Ktop_Robot
站務副站長 發表:0 回覆:3511 積分:0 註冊:2007-04-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |