全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:3782
推到 Plurk!
推到 Facebook!

以IdSMTP發信至大陸地區,開啟信件為亂碼

尚未結案
fivker
一般會員


發表:24
回覆:38
積分:12
註冊:2006-12-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-01-14 17:14:17 IP:220.128.xxx.xxx 訂閱
大家好:
我在使用IdSMTP元件發信,使用端的電腦語系為簡體版,以outlook收信
email.CharSet:='UTF-8';
email.ContentType := 'multipart/mixed';
subject 顯示正常
但是body部份為亂碼,附檔檔名也是亂碼,該怎麼設定??謝謝

以下是原始碼
[code delphi]
procedure generate_mail;
var
i: integer;
txtpart: Tidtext;
htmpart: tidtext;
bmppart: TIdAttachment;
begin
//for i:= 0 to MemoForm.memo1.lines.count - 1 do begin
// html.add(parseline(MemoForm.memo1.Lines.Strings[i]));
//end;
for i:=0 to Memomail.Lines.count-1 do
begin
html.add(Memomail.Lines.Strings[i]);
end;
email:= TIdMessage.Create(nil);
email.From.Text:= aaaa@xxxx.com.tw;
email.CharSet:='UTF-8';
email.subject:=EditSubject.text;

email.ContentType := 'multipart/mixed';
email.Body.Assign(html);

txtpart:= TIdText.Create(email.MessageParts);
txtpart.ContentType := 'text/plain';
txtpart.Body.Text := '';

htmpart := TIdText.Create(email.MessageParts, html);
htmpart.ContentType := 'text/html';
//if vexcelfilname<>'' then
TIdAttachment.Create(email.MessageParts,'C:\測試資料.txt');

for i:= 0 to piclist.Count - 1 do begin
bmppart:= TIdAttachment.Create(email.MessageParts, piclist.Strings[i]);
bmppart.ContentType := 'image/jpeg';
bmppart.ContentDisposition := 'inline';
bmppart.ExtraHeaders.Values['content-id']:= piclist.Strings[i];
bmppart.DisplayName := piclist.Strings[i];
end;
end;

[/code]
fivker
一般會員


發表:24
回覆:38
積分:12
註冊:2006-12-05

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-01-16 15:48:10 IP:220.128.xxx.xxx 訂閱
測試郵件-是否有亂碼!!

-->寄給使用者(大陸),變成

代刚秎ン-琌Τ睹絏

請問該怎麼設定?? T^ T
fivker
一般會員


發表:24
回覆:38
積分:12
註冊:2006-12-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-01-17 11:29:11 IP:220.128.xxx.xxx 訂閱
用webmail +VB 發送email  成功(程式碼在下方)

但我的delphi 程式改成用webmail發送。
內容改成html語法去增加
也作了下列設定
email.CharSet:='UTF-8';
email.ContentTransferEncoding:='code64';
email.ContentType := 'text/html; charset="UTF-8" ';

不過怎麼測,user收到的信件還是亂碼,真是頭痛 @@


[code vb]
Sub Main()
Dim strSysMail() As String = {"system@webmail.com.tw", "系統管理員"}
Dim mMail As New MailMessage
mMail.IsBodyHtml = True
Dim strPriority As String = "High"
'宣告信件本文
Dim mMailBody As New StringBuilder
'用來做迴圈使用
Dim i As Integer = 0
'以下為組合郵件本文
mMailBody.Append("<html>")
mMailBody.Append("<head><meta http-equiv=content-type content=text/html></head>")
mMailBody.Append("<body bgcolor=#ffffff topmargin=3 marginheight=3>")

mMailBody.Append("

")
mMail.Subject = " 測試郵件"
mMailBody.Append("測試郵件-是否有亂碼!!

")
'結束郵件本文的 Html 語法
mMailBody.Append("</body></html>")
mMail.From = New MailAddress("AAA@XXX.com")
mMail.CC.Add("bbb@XXX.com")

i = 0
Dim ErrMsg As String = ""
While i < 5
Try
Dim mClient As New SmtpClient
mMail.IsBodyHtml = True
mMail.BodyEncoding = System.Text.Encoding.Default
Dim htmlView As AlternateView = AlternateView.CreateAlternateViewFromString(mMailBody.ToString, Nothing, "text/html")
mMail.AlternateViews.Add(htmlView) '將上述設定好的內嵌圖檔格式加入到 Mail 物件
Select Case strPriority.ToUpper
Case "HIGH"
mMail.Priority = Net.Mail.MailPriority.High
Case "LOW"
mMail.Priority = Net.Mail.MailPriority.Low
Case "NORMAL"
mMail.Priority = Net.Mail.MailPriority.Normal
End Select

mClient.Host = "webmail.com.tw"
mClient.Port = 25
mClient.UseDefaultCredentials = False
mClient.Credentials = New System.Net.NetworkCredential("userid", "password")

mClient.Send(mMail)
Exit While
Catch ex As Exception
ErrMsg = ex.ToString
i = 1
End Try

If i = 5 Then '代表email 發送 5 次都不成功
'表示發送 email 失敗
'宣告一個以定義好的 DataTable 用來儲存針對 Sql Server 的語法

Dim msg As String = "【發送 Email 失敗】,請通知系統管理人員!!" & vbCrLf & ErrMsg
'將錯誤的訊息顯示給 User


End If
End While
End Sub
[/code]
編輯記錄
fivker 重新編輯於 2009-01-17 11:30:31, 註解 無‧
fivker 重新編輯於 2009-01-17 11:32:11, 註解 無‧
zhouying82
高階會員


發表:150
回覆:272
積分:189
註冊:2004-03-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-02-15 16:03:29 IP:124.77.xxx.xxx 訂閱
不知楼主是不是用的是D2009,如果是的话,这个问题确实存在,是他的BUG, 建议你使用d2007,或者使用FastNet控件,应该可以解决问题。
------
断断续续的学了几年,还是一个初学者,永远支持Delphi !
zhouying82
高階會員


發表:150
回覆:272
積分:189
註冊:2004-03-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-03-03 13:44:32 IP:218.80.xxx.xxx 訂閱
楼上的,或者你设置“Content-Type: text/html;” 在试试看?
------
断断续续的学了几年,还是一个初学者,永远支持Delphi !
fivker
一般會員


發表:24
回覆:38
積分:12
註冊:2006-12-05

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-03-04 12:46:10 IP:220.128.xxx.xxx 訂閱
您好,我的開發環境是Delphi 5,FastNet元件本身不支援html碼的content。
content-Type:text/html 這段我也有測試過,但是還是一樣出現亂碼。


===================引 用 zhouying82 文 章===================
楼上的,或者你设置“Content-Type: text/html;” 在试试看?
系統時間:2024-04-27 4:02:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!