D2009下Indy发送邮件中文乱码问题

    发现问题后,试着在网上搜索相关问题,有说是指定字符集idmessage.charset。然而这种方式并不能解决。

    试过用D7写Demo验证,是没问题。D7与D2009字符编码差别在ansi和unicode,故而怀疑Indy在unicode的中文字编码处理上存在问题——可能存在转换时数据丢失。

 

   最后尝试在idmessage正文部分做如下处理:

  idmessage1.CharSet := 'gb2312';
  idmessage1.ContentTransferEncoding := 'base64';//关键是设置编码转换,避免数据丢失


    以上处理,在邮件正文部分可正确显示中文。但是主题中的汉字仍然是乱码,故仿照正文编码转换,最后才正确显示,如下:

var
  ss: string;
begin
  ss:= Format('=?gb2312?B?%s?=', [Encodestring(edit1.Text)]);
  idmessage1.subject := ss;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值