收信的标题中如有中文,出现乱码问题。
据说要修改indy的一个源文件,请高手指教,最好有详细步骤。谢谢!

解决方案 »

  1.   

    没有idpop3的源代码,只有NMPOP3的,呵呵,试试着改一下吧因为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:='接收完毕';
      

  2.   

    中文编码部分,不妨参考本人的BCB解决方案。
    http://expert.csdn.net/Expert/TopicView2.asp?id=1126270