FMX程序使用IdSMTP安卓发邮件win10的Mail接收标题乱码是为啥?

ooolinux 2019-11-10 02:47:12
FMX程序使用IdSMTP安卓发邮件win10的Mail接收标题乱码是为啥?
同一程序从win10发送win10接收则正常。
主要代码:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
//要在邮箱设置里启用smtp
IdSMTP1->Host="smtp.163.com";
IdSMTP1->Port=25;
IdSMTP1->Username="xxx@163.com";
IdSMTP1->Password="xxx";
// try
{
IdSMTP1->Connect();
// IdSMTP1->Authenticate();
}
// catch(...)
// {
// ShowMessage(u"连接服务器失败");
// return;
// }

IdMessage1->From->Address=IdSMTP1->Username;
IdMessage1->Recipients->EMailAddresses="yyy@163.com";
IdMessage1->CharSet="GBK";
IdMessage1->Subject=Edit1->Text;
// IdMessage1->Body->Text=Memo1->Text;
IdMessage1->Body->Assign(Memo1->Lines);
try
{
IdSMTP1->Send(IdMessage1);
ShowMessage(u"邮件发送成功");
}
catch(...)
{
ShowMessage(u"邮件发送失败");
}
IdSMTP1->Disconnect();
}
//---------------------------------------------------------------------------
...全文
1480 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
abc_ustone 2020-09-01
  • 打赏
  • 举报
回复
ooolinux 2020-03-10
  • 打赏
  • 举报
回复
ooolinux 2019-12-02
  • 打赏
  • 举报
回复
ooolinux 2019-12-02
  • 打赏
  • 举报
回复
引用 2 楼 早打大打打核战争 的回复:
设置ContentTransferEncoding试试
我代码加了这两句: IdMessage1->ContentTransferEncoding="8bit"; //试了 binary 等 IdMessage1->Encoding=TIdMessageEncoding::meMIME; //这句会导致win10收到的邮件内容为?????? 貌似这个属性只会改变邮件内容,对邮件标题不起作用。
ooolinux 2019-12-02
  • 打赏
  • 举报
回复
引用 2 楼 早打大打打核战争 的回复:
设置ContentTransferEncoding试试


我有空试下看。
  • 打赏
  • 举报
回复
设置ContentTransferEncoding试试
用Delphi2010 实现邮件附件收发功能 TIdPOP3组件简介 TIdPOP3 是用来接收邮件服务器的邮件信息到用户端的一个组件。它实现了RFC 1939协议。 在使用TIdPOP3组件时需设置它的几个成员属性。 Host :指定邮件服务器,一般为pop3邮件服务器的地址,如 pop3.126.com。 Username :用户名,也就是邮箱名,如billanking2002@126.com。 Password :邮箱密码,在进行收发邮件时组件需要凭密码进行登录。 其它成员属性 Connected:返回它与邮件服务器的连接状态,这true表示已经连接。 CheckMessages:邮件数,如果连接服务器成功,则可以获得服务器端的邮件数。 成员函数 procedure Connect(const ATimeout: Integer = IdTimeoutDefault); 与服务器连接函数。参数为无效连接时等待的毫秒数。 function RetrieveHeader(const MsgNum: Integer; AMsg: TIdMessage): Boolean; 接收邮件头信息,它有两个参数,MsgNum表示在接收第几个邮件,从1开始,AMsg为邮件消息组件实例。 function Retrieve(const MsgNum: Integer; AMsg: TIdMessage): Boolean; 接收邮件主体信息,它与 RetrieveHeader的参数是一样的。接收的邮件内容将保存在AMsg中。 function Delete(const MsgNum: Integer): Boolean; 删除邮件服务器中第几个邮件。从1开始。 procedure Disconnect; override; 关闭连接。 TIdMessage组件简介 TIdMessage用来支持邮件消息协议,如POP3,SMTP,NNTP等。TIdMessage支持多用途Internet邮件扩展(MIME)协议。 常用的TIdMessage的属性: Subject:邮件主题,这个字符串经过BASE64编码的。所以在使用时需对它进行解码。 MessageParts:这是TIdMessageParts类的一个实例,它用来存储邮件的信息。如邮件内容及附件信息。在进行解析时需要判断它是否为附件或文本,如果为附件时,其文件名是经过BASE64编码的。判断常量分别为TIdText , TIdAttachment。 Body:这是个字符串列表,包含构成该邮件的正文内容。 Form:发送邮件者的地址信息。 Recipients:收件人地址信息。 BccList:抄送地址列表。 CharSet:指示邮件信息中使用的字符集。 ContentType:指定MIME媒体数据类型,描述正文中包含的数据,使用户代理决定如何显示数据,常用的有text/html,text/xml。 TIdSMTP组件简介 TIdSMTP是TIdMessageClient派生出的一个简单邮件传输协议和SMTP客户端。 它的主要功能是发送邮件信息。 常用的属性: Host :SMTP邮件服务器的地址,如smtp.126.com。它与上面的POP3地址不一样。 AuthenticationType:服务器认证类型,它有atNone,atLogin两种,即不需要认证和需要凭用户名和密码进行认证。 Username:用户名,这里与TIdPOP3 有点不一样,即它不需要后缀,如billanking2002 Password:邮箱登录密码。如果AuthenticationType设置了atLongin则必须设置密码和用户名。

830

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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