【发布时间】:2013-10-08 18:46:27
【问题描述】:
我正在尝试使用 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
【问题讨论】:
-
您在
IdMessage1.BccList.EMailAddresses :='umail@gmail.com;;行缺少尾随引号。 -
当我点击“发送邮件”按钮时,除了让我的应用程序无响应(第一代 Nexus 7)之外,我无法让 IdSMTP 做任何事情。该表单在应用程序启动时显示得很好。也许您可以从一个空白应用程序开始,一次添加一个组件,然后重新开始。
-
然后你需要调试你的应用程序。首先确认 TIdSMTP 是否有错误,不要只是假设它是错误的。如果它有问题(我怀疑),那么您可以跟踪其源代码以找到实际的挂起。或者,您可以简单地重新设计您的代码以从 TForm 中删除 TIdSMTP,并将其移至工作线程(无论如何您都应该这样做,因为您永远不应该阻塞主线程)。
标签: android delphi smtp indy delphi-xe5