解决CB TIdMessage 发送不了中文的问题

问题:  在发送中文邮件时,在收件人那,中文全部被“?” (问号)取代。

 

解决方法:

  需要base64解码,然后再发送邮件。代码如下:

         // base64 解码

         TIdEncoderMIME *Encoder = new TIdEncoderMIME(NULL);

         Encoder->EncodeString(subject);

         TBytes bytes;

         AnsiString tSubject = subject.Trim(); // 中转变量tSubject

         bytes.Length = tSubject.Length();

         memcpy(&bytes[0], tSubject.c_str(), tSubject.Length());

         String subjectMid = Encoder->EncodeBytes(bytes); // 中间字段

         String subjectStar = "Subject: =?gb2312?B?"; // 头字段

         String subjectEnd = "?="; // 尾字段

         subjectStar = subjectStar + subjectMid + subjectEnd; // 合并字段

 

         Message->CharSet = "gb2312";

         Message->ExtraHeaders->Add(subjectStar); // 载入合并字段,将Subject base64编码

解释:BASE64编码是一种常用的将二进制数据转换为可打印字符的编码。

 

  资料参考:http://ofme.cn/post-49.html

希望对大家有帮助。谢谢

转载于:https://www.cnblogs.com/ss815367696/archive/2012/08/22/2651519.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值