uniGUI-Linux发送邮件标题乱码解决方法

网上搜索uniGUI发送电子邮件,基本上全部都是VCL的情况。其实VCL引用的indy-TIdSMTP发送邮件,将代码复制粘贴到uniGUI中,一样可以发送邮件;但是头疼的是,邮件主题Subject乱码,不管你如果设置CharSet,都无用;
原因是Delphi目前使用的是indy10的版本,而indy10并没有完美的支持Linux下面发送电子邮件;那么如何解决这个邮件主体Subject乱码的问题呢?


1,uniGUI的FMSoft自带有uIndy,那么肯定是可以使用uIndy发送邮件了,将VCL下的发送邮件引用的文件,全部都加上u,例如:

IdComponent, IdTCPConnection,IdText, IdMessage ...全部修改成
uIdComponent, uIdTCPConnection,uIdText, uIdMessage...,发送邮件的代码部分不需要改动;


2,将uniGUI的Indy中uTIdMessage.pas文件进行修改,如下图:

  {$ifdef Linux64}
  ISOCharSet := 'UTF-8';
  HeaderEncoding := 'B';
  {$endif}

3,保存之后,重新编译,发送邮件,邮件主题Subject部分就不乱码了;

4,发送邮件主题部分代码:

var

  Msg: TIdMessage;

  Msg := TIdMessage.Create(nil);
  Msg.ContentType := 'multipart/mixed';

  Msg.ContentTransferEncoding := 'base64';
  Msg.Clear;
  Msg.Body.Clear;  // 先清空上次发送的内容
  Msg.From.address := '发送者'; 
  Msg.Recipients.EMailAddresses := EReceive; // 收件人地址,多个用逗号隔开
  Msg.CCList.EMailAddresses := EReceiveOther; // 抄送人地址,多个用逗号隔开
  Msg.BccList.EMailAddresses := EReceiveOther; // 密送人地址,多个用逗号隔开
  Msg.Subject := ETitle;
  Msg.CharSet := 'UTF-8';

--------------------------------------------------
在uIdGlobalProtocols.pas单元中,

根据注释,应该可以将idcs_ISO_8859_1修改成idcs_UTF_8,这样就应该就可以了。但是实际并不行;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值