delphi xe5 android,android – 发送电子邮件Delphi XE5

博客作者在尝试使用Indy组件从DelphiXE5的Android应用发送电子邮件时遇到问题,应用在尝试连接SMTP服务器时会暂停。他们怀疑这可能是因为Indy组件与Android不兼容。作为替代,作者提供了使用Android内置电子邮件创建选项的代码示例,通过启动一个意图让用户选择邮件应用来发送邮件。这是一个临时解决方案,但并未直接解决Indy组件在Android上的问题。
摘要由CSDN通过智能技术生成

我正在尝试使用Indy组件从Delphi XE5(android)发送电子邮件:

在表单中,我有一个TIdSMTP和一个TIDMessage.

创建表单时:

testform:=Ttestform.create(self);

testform.show;

应用程序暂停,我不知道有什么问题…我认为Indy组件在Android中不兼容…

IdSMTP1.Heloname:='test';

IdSMTP1.Host:='smtp.gmail.com';

IdSMTP1.Username:='umail@gmail.com';

IdSMTP1.Port:=465;

IdSMTP1.Password:='pass';

if IdSMTP1.Connected=True then IdSMTP1.Disconnect;

IdMessage1.clear;

IdMessage1.From.Text :='Testing';

IdMessage1.BccList.EMailAddresses :='umail@gmail.com';

IdMessage1.Priority := mpHigh;

IdMessage1.Sender.Text:='Umail';

IdMessage1.Subject := 'Subject';

IdMessage1.Body.Add('test');

IdSMTP1.Connect;

Try

IdSMTP1.Send(IdMessage1);

except

End;

有人用这个吗?!

Form Dont SHOW应用程序暂停…

请在这里查看完整的来源http://pastebin.com/iGtJrHHs

解决方法:

这不是Indy问题的直接答案,但如果您考虑在Android上使用内置电子邮件创建选项进行切换,您可以使用以下代码:

uses

FMX.Helpers.Android,

Androidapi.JNIBridge,

Androidapi.JNI.JavaTypes,

Androidapi.JNI.GraphicsContentViewText;

...

procedure CreateEmail(const Recipient, Subject, Content: string);

var

Intent: JIntent;

Recipients: TJavaObjectArray;

begin

Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_SEND);

Recipients := TJavaObjectArray.Create(1);

Recipients.Items[0] := StringToJString(Recipient);

Intent.putExtra(TJIntent.JavaClass.EXTRA_EMAIL, Recipients);

Intent.putExtra(TJIntent.JavaClass.EXTRA_SUBJECT, StringToJString(Subject));

Intent.putExtra(TJIntent.JavaClass.EXTRA_TEXT, StringToJString(Content));

Intent.setType(StringToJString('plain/text'));

SharedActivity.startActivity(TJIntent.JavaClass.createChooser(Intent,

StrToJCharSequence('Which email app?')));

end;

我会把它交给其他人来解决Indy问题.

标签:android,delphi,smtp,indy,delphi-xe5

来源: https://codeday.me/bug/20190728/1565497.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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则必须设置密码和用户名。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值