使用Indy 發mail,如果主旨超過24個中文字,內文自動會多一些訊息 |
答題得分者是:artist1002
|
homing927
一般會員 發表:1 回覆:1 積分:0 註冊:2003-05-07 發送簡訊給我 |
|
artist1002
高階會員 發表:2 回覆:155 積分:151 註冊:2002-09-26 發送簡訊給我 |
這個問題我也有碰到過, 我當時是使用Indy 9.0.11
會有這樣的Bug
根據我的測試, 原因是因為Indy的Message在遇到超過46個字元之後的base64編碼, 會產生換行. 而Indy在這個情況下會出現不正確的的換行, 導致在主旨後面的信件不正確, 閱讀E-mail的程式就會把不正確換行之後的所有文字都認為是內文.所以就會出現如你遇到的(內文自動多出訊息).
現在Indy出到9.0.14,不知道還有沒有這樣的錯誤.
解決方法:我當時的解決方式是自己做主旨的編碼.程式碼如下(我是用BCB的)
temp=IdMessage->Subject; if (temp.Length()>46) { if ((IdMessage->CharSet.LowerCase()=="big-5")||(IdMessage->CharSet.LowerCase()=="chinesebig5")||(IdMessage->CharSet.LowerCase()=="big5")) { for (i=1;i<=temp.Length();i ) if (temp.IsLeadByte(i)) break; if (i<=temp.Length()) { IdMessage->Subject=""; for (i=1,j=1;i<=temp.Length();i ,j ) { if (j==46) { if (i>46) IdMessage->Subject ="\n\t"; //就是這裡,Indy只有換行但是沒有tab的符號 IdMessage->Subject ="=?big5?B?" B64Encode(temp.SubString(i-45,46)) "?="; j=0; } } if (i>46) IdMessage->Subject ="\n\t"; IdMessage->Subject ="=?big5?B?" B64Encode(temp.SubString(i-j 1,j)) "?="; if (IdMessage->Subject=="") IdMessage->Subject=temp; } else IdMessage->Subject=temp; } else IdMessage->Subject=temp; } else IdMessage->Subject=temp;發表人 - artist1002 於 2003/07/14 13:50:16 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |