c++ builder IdSMTP发送邮件,中文标题乱码.请问有高手会解决吗?

tianxiubao1 2012-09-01 04:28:03
c++ builder IdSMTP发送邮件,中文标题乱码.请问有高手会解决吗?下面是测试的代码,发送邮件正常且邮件内容为中文的也是正常,就是标题为中文时乱码,每个汉字显示为一个"?"号。或者各位有好的其它发邮件方式也可以告之一下,谢谢,请各位高手不吝赐教。


IdMessage1->ContentType = "text/html; charset='utf-8'";
IdMessage1->CharSet = "utf-8";
IdMessage1->ContentTransferEncoding = "base64";
IdMessage1->AttachmentEncoding = "MIME"; // 识别默认编码机制用于邮件部分
IdMessage1->Encoding = meDefault;

IdMessage1->Recipients->EMailAddresses = "258822@qq.com"; // 邮件接收者的信箱
IdMessage1->From->Text = "tcv@163.com"; // 邮件发送者的信箱
IdMessage1->Subject = "中国"; //汉字乱码,字母和数字正常
IdMessage1->Body->Add("利用C++Builder中的IdSMTP和IdMessage控件发送电子邮件"); // 邮件内容
IdMessage1->CCList->EMailAddresses = "258822@qq.com"; // 邮件的抄送地址
IdMessage1->Priority = mpNormal;

if (IdSMTP1->Connected()) {
IdSMTP1->Disconnect();
}
IdSMTP1->Host = "smtp.163.com"; // SMTP服务器
IdSMTP1->Username = "tcv@163.com"; // 163邮箱的用户名
IdSMTP1->Password = "12346"; // 163邮箱的密码
IdSMTP1->Port = 25; // 端口
IdSMTP1->Connect(); // 连接SMTP服务器
if (IdSMTP1->Authenticate()) // 用户验证
{
Memo1->Lines->Add("登录服务器验证成功!");
IdSMTP1->Send(IdMessage1); // 发送邮件
Memo1->Lines->Add("邮件发送成功");
}
IdSMTP1->Disconnect(); // 中断连接SMTP服务器
...全文
872 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianxiubao1 2012-09-01
  • 打赏
  • 举报
回复
妖哥 有其它好的推荐吗?能发正常发邮件就可以
ccrun.com 2012-09-01
  • 打赏
  • 举报
回复
这个问题好像是BUG。建议楼主改用其他方法。
tianxiubao1 2012-09-01
  • 打赏
  • 举报
回复
这个只能试试,您那个代码是delphi的,bcb不知有类似的没
缘中人 2012-09-01
  • 打赏
  • 举报
回复
有类似这样的处理语句吗,如果加了俺也没辙了

capt := EncodeString('郵件主題');
ss := format('=?BIG5?B?%s?=', [capt]);
tianxiubao1 2012-09-01
  • 打赏
  • 举报
回复
是的 我现在就是这个问题,内容中英字符串都正常, 就是标题的中文全是"?"号。 跟它一样
缘中人 2012-09-01
  • 打赏
  • 举报
回复
xe2,是应该是最新的了,我没用过。

看看这个方法,
内容是好的,主题乱码
http://blog.csdn.net/liukeforever/article/details/4932491
tianxiubao1 2012-09-01
  • 打赏
  • 举报
回复
xe2 版本 应该就是最新的吧
tianxiubao1 2012-09-01
  • 打赏
  • 举报
回复
是的 c++ builder xe2,试了很久都不行,除了bcb自带的控件,还有其它推荐的吗?因为如果中文标准不支持的话,就没有任何用了。
缘中人 2012-09-01
  • 打赏
  • 举报
回复
貌似是indy控件的bug
主要原因还是indy10的BUG
CopyTIdString只是简单的1对1复制 也就是说中文的话只复制了两个字节中的第一个字节
// do just a byte to byte copy with no translation. VCL uses ANSI or MBCS.
// With MBCS we still map 1:1
缘中人 2012-09-01
  • 打赏
  • 举报
回复
cb2010?

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧