線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1488
推到 Plurk!
推到 Facebook!

IdSMTP1.Send 送出內文為???亂碼問題

尚未結案
weiliching
初階會員


發表:53
回覆:78
積分:31
註冊:2003-12-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2015-09-05 15:22:13 IP:113.161.xxx.xxx 訂閱
Dear ALL:

用Xe7 寫idSMTP 發Email
原本在 D7 程式使用 , 在內容寫中文, 一切正常,
改成Xe7 後~發生Email 的中文內文 , 確變成了 "???"
但是Subject 主旨確是正常的中文顯示.
我在Debug 用Watch list 去看 EText:TString 的內容, 與 idmessage1.Body 的內容,
發現顯示一切都正常.
所以判斷可以是 IdSMTP1.Send(IdMessage1) 時出的問題,
有特別加入
IDSMTP1.iohandler.defstringencoding:= IndyTextEncoding(Tencoding.ANSI);
去處理,但是一樣無效
也試過以下這些方式, 同樣中文會顯示 "??? "
idmessage1.ContentTransferEncoding := 'base64';
IdMessage1.CharSet:='utf-8';
IdMessage1.CharSet:='big5';
IdMessage1.CharSet:='US-ASCII';

爬了很多文~尚不知是哪部份出的問題.




原程式碼:
Var EText:TStringList;
begin

IDMessage1.Clear;
IdMessage1.Subject:= 'mail發信通知';
IdMessage1.From.Text := 'test@aaa.com'; //寄件人

idmessage1.recipients.EMailAddresses:= 'vincent@aaa.com'; //收件人
// IdMessage1.CharSet:='utf-8';
IdMessage1.CharSet:='big5';
idmessage1.ContentType:='text/html';
// IdMessage1.CharSet:='US-ASCII';
idmessage1.ContentTransferEncoding := 'base64';//有無加也是會???
// Content-Language: zh-tw
EText := TStringList.Create;

EText.Add('會產生亂碼的內文

');////watch list view 一切正常
idmessage1.Body.Assign(EText); //watch list view 一切正常
EText.Free;

IdSMTP1.Host := '192.168.1.12';
IdSMTP1.MailAgent := '1';
IdSMTP1.UserName := 'oa@promaxvn.com';
IdSMTP1.HeloName := 'oa';
IdSMTP1.Password := 'p86885789';
IdSMTP1.Port := 25;
IdSMTP1.Connect;
IDSMTP1.iohandler.defstringencoding:= IndyTextEncoding(Tencoding.ANSI); // 不管有無新增都無效??

IdSMTP1.Send(IdMessage1);
IdSMTP1.Disconnect;


Ray_Lin
一般會員


發表:0
回覆:30
積分:11
註冊:2015-07-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2015-09-06 11:36:30 IP:114.32.xxx.xxx 未訂閱
試一下    
SMSG.Encoding := meMIME;
SMSG.CharSet := 'UTF-8';
UTF-8用大寫
weiliching
初階會員


發表:53
回覆:78
積分:31
註冊:2003-12-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2015-09-08 14:47:25 IP:42.119.xxx.xxx 訂閱
還是會出現?? 無法顯示中文

下面是收到的內容如下:
SC:VLM158062
PD Remark:???
??:Email Time2015/9/8 ?? 02:43:57
pcplayer99
尊榮會員


發表:142
回覆:740
積分:591
註冊:2003-01-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2015-09-08 20:46:36 IP:183.15.xxx.xxx 訂閱
EMAIL 的内容,是 MIME 的。MIME 的东西,要注意编码。最好是采用 UTF-8。但这个不单单是改变邮件头里面关于内容的编码描述,还必须要更改内容本身的编码。原则上,EMAIL 的真实内容应该是 ASCII 的,如果是 UTF-8,或者是 BIG5 等等,还必须要编码为 BASE64 才能真正用于传输。
weiliching
初階會員


發表:53
回覆:78
積分:31
註冊:2003-12-27

發送簡訊給我
#5 引用回覆 回覆 發表時間:2015-09-18 13:08:24 IP:211.23.xxx.xxx 訂閱
已經自我解決了,
問題點竟然在於 ,寫法問題,
我把 idmessage1.CharSet := 'UTF-8';
放在 idmessage1.ContentType:='text/html'; 之後就ok了,
弄不清是什麼原因
所以寫法就是
idmessage1.ContentType:='text/html';
idmessage1.CharSet := 'UTF-8';
一切就正常
如果寫成
idmessage1.CharSet := 'UTF-8';
idmessage1.ContentType:='text/html';
就會掛掉. 能否有大大解說一下?
系統時間:2017-11-19 22:18:07
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!