I
import
Unregistered / Unconfirmed
GUEST, unregistred user!
将memo1的IME(input method editor)改为imechinese模式,再试试. 我听说这是因为SMTP在传输中,不会对邮件的中文编码自动解码,需要自己手动解码,
如果上面还不能解决的话,还有一种方法,就是先将收到的编码以二进制形式写入文件,再以ascii码的形式将其读出,就可以解决了
procedure Tfrm_Get_Mail.NMPOP31Connect(Sender: TObject);
var
S: String;
M: Integer;
begin
frm_Get_Mail.Caption:='已经连接到 '+ADOQuery1['Mail_UserName']+' 在 '+ADOQuery1['Mail_POP3_Host']+'上';
if NMPOP31.MailCount > 0 then
begin
Label1.Caption:='有 '+IntToStr(NMPOP31.MailCount)+' 封信在你的信箱里。';
if InputQuery('输入一个编号', '接收哪条? (1-'+IntToStr(NMPOP31.MailCount)+')', S) then
begin
M := StrToIntDef(S, -1);
If (M < 0) or (M > NMPOP31.MailCount) then
ShowMessage('无效的编号')
else
ProgressBar1.Max:=100;
ProgressBar1.Min:=0;
NMPOP31.GetMailMessage(M);
end;
end
else
Label1.Caption:='没有邮件.';
end;
procedure Tfrm_Get_Mail.NMPOP31DecodeStart(var FileName: String);
var
S: String;
begin
S := FileName;
if InputQuery('保存附件', '文件名?', S) then
FileName := S;
end;
procedure Tfrm_Get_Mail.NMPOP31RetrieveEnd(Sender: TObject);
begin
Memo1.Text := NMPOP31.MailMessage.Body.Text;
Memo1.lines.add( NMPOP31.MailMessage.Subject);
Memo1.Lines.Add(NMPOP31.MailMessage.From);
Label1.Caption:='接收完毕';
end;
如果上面还不能解决的话,还有一种方法,就是先将收到的编码以二进制形式写入文件,再以ascii码的形式将其读出,就可以解决了
procedure Tfrm_Get_Mail.NMPOP31Connect(Sender: TObject);
var
S: String;
M: Integer;
begin
frm_Get_Mail.Caption:='已经连接到 '+ADOQuery1['Mail_UserName']+' 在 '+ADOQuery1['Mail_POP3_Host']+'上';
if NMPOP31.MailCount > 0 then
begin
Label1.Caption:='有 '+IntToStr(NMPOP31.MailCount)+' 封信在你的信箱里。';
if InputQuery('输入一个编号', '接收哪条? (1-'+IntToStr(NMPOP31.MailCount)+')', S) then
begin
M := StrToIntDef(S, -1);
If (M < 0) or (M > NMPOP31.MailCount) then
ShowMessage('无效的编号')
else
ProgressBar1.Max:=100;
ProgressBar1.Min:=0;
NMPOP31.GetMailMessage(M);
end;
end
else
Label1.Caption:='没有邮件.';
end;
procedure Tfrm_Get_Mail.NMPOP31DecodeStart(var FileName: String);
var
S: String;
begin
S := FileName;
if InputQuery('保存附件', '文件名?', S) then
FileName := S;
end;
procedure Tfrm_Get_Mail.NMPOP31RetrieveEnd(Sender: TObject);
begin
Memo1.Text := NMPOP31.MailMessage.Body.Text;
Memo1.lines.add( NMPOP31.MailMessage.Subject);
Memo1.Lines.Add(NMPOP31.MailMessage.From);
Label1.Caption:='接收完毕';
end;