分享

SakMail组件发出的邮件,可能收到乱码的问题

 独孤求财 2012-03-20

SakMail组件发出的邮件,可能收到乱码的问题

时间:2011-5-26来源:yang 作者: peng点击: 17次

在SakMsg.pas中
TSakMsg.Create过程中,初始定义了  FCharSet := ‘ISO-8859-1‘;  // you can change this
经测试发现,如果不改CharSet、TextEncoding属性,在mail.sina.com.cn收到的邮件正常的(收发都用sina邮箱),但发现163的邮件则中文部分是乱码。
通过分析发现SakMsg默认用8BIT编码,那么可能是邮件服务之间传输时,由于某个服务器不支持8BIT的传输或解析,导致看起来是乱码,所以直接用Base64来进行编码就可以解决了,于是将
TextEncoding := taBase64; CharSet :=‘utf-8‘;
结果收到的sina和163收到的都是乱码(中文部分),查找了一下,发现编码前没有进行内友转换,于是在FillRawMail过程里,将Body.Text := Text.Text;行替换成
  if FCharSet = ‘utf-8‘ then begin
    Body.Text := AnsiToUtf8(Text.Text);//邮件正文
    Subject := AnsiToUtf8(Subject);//邮件标题
  end else begin
    Body.Text := Text.Text;
  end;
问题解决。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多