iOS Firemonkey:如何通过Firemonkey Delphi XE7中的邮件应用程序从iOS App发送电子邮件

时间:2015-02-02 15:22:51

标签: ios delphi email firemonkey delphi-xe7

我使用Delphi XE7在Firemonkey中使用iOS App。

问题:我需要通过Firemonkey中的邮件应用程序从我的iOS应用程序发送电子邮件。

我看过其他旧博客发送电子邮件,但这些解决方案对我没有帮助。

以下是我尝试过的旧链接,但我无法解决。

http://blogs.embarcadero.com/ao/2011/10/04/39133

http://blogs.embarcadero.com/matthiaseissing/2013/05/03/38707/

请告诉我一些其他解决方案或样本。

提前致谢。

2 个答案:

答案 0 :(得分:1)

使用您包含的第二个链接中的代码: http://blogs.embarcadero.com/matthiaseissing/2013/05/03/38707/

适用于XE4,您只需进行一些更改即可使其适用于XE7:

StrToNSUrl函数已移至XE7中的Macapi.Helpers单位,因此您必须将其添加到uses子句中。此外,不推荐使用NSStr函数,因此您应该使用StrToNSStr代替(也来自Macapi.Helpers)。

这是一个将所有功能放在一起的功能:

procedure SendEmail(aEmail: string; aSubject: string = ''; aBody: string = '');
var lSharedApplication: UIApplication;
    lURL: string;
begin
  lURL := 'mailto:'+aEmail;
  if (aSubject<>'') or (aBody<>'') then
  begin
    lURL := lURL+'?subject='+aSubject;
    if aBody<>'' then
      lURL := lURL+'&body='+aSubject;
    lURL := StringReplace(lURL,' ','%20',[rfReplaceAll]); //replace spaces
    lURL := StringReplace(lURL,sLineBreak,'%0D%0A',[rfReplaceAll]);//replace linebreaks
  end;
  lSharedApplication := TUIApplication.Wrap(TUIApplication.OCClass.SharedApplication);
  lSharedApplication.openURL(StrToNSUrl(lURL));
end;

这样称呼:

SendEmail('name@email.nowhere','My subject','My body');

答案 1 :(得分:1)

使用D.P.F Delphi iOS Native Components

中包含的TDPFMailCompose类

这为您提供了比mailto:链接更多的选项,您不必担心编码。在内部,它使用iOS MFMailComposeViewController类。

示例:

var
  Mail: TDPFMailCompose;
begin
  Mail := TDPFMailCompose.Create(nil);
  if not Mail.MailCompose(Msg.Subject, Msg.Body, False, [Msg.To_], [Msg.CC], [Msg.BCC], [AttachedFileName]) then
     MessageDlg('Error sending mail', TMsgDlgType.mtError, [TMsgDlgBtn.mbClose], -1);
end;