E-Mail senden aus Delphi iOS
Wenn man direkt aus seinem Delphi XE4 iOS Programm eine E-Mail über das Bord-eigene E-Mail Programm senden will, ist das eigentlich ganz einfach…. wenn man weiß wie.
Diese Funktionen verstecken sich im UIApplication Objekt. Dies wollen wir erstmal haben:
TUIApplication.Wrap(TUIApplication.OCClass.SharedApplication);
Dann noch eine kleine Funktion, die aus einem normalen Delphi-String eine NSURL macht:
TNSUrl.Wrap(TNSUrl.OCClass.URLWithString(NSSTR(AStr)));
Anschliessend können wir die E-Mail recht einfach versenden:
URL := 'mailto:vorname.nachname@domain.com?subject=Test&body=Testmessage'; SharedApplication.openURL(StrToNSUrl(URL));
Natürlich kann man "Test" und "Testmessage" durch eigene Strings (hier reichen reine Delphi-Strings) ersetzen und sich den Text/String passend konkatinieren.
Damit wir auf die UIApplication und die Typen zugreifen können, brauchen wir noch die Erweiterung der USES-Clause um iOSapi.UIKit und iOSapi.CocoaTypes
Komplett sieht das dann so aus (sorry für die Formatierung):
unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes,
System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,
iOSapi.Foundation, iOSapi.UIKit, iOSapi.CocoaTypes;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
function SharedApplication: UIApplication;
function StrToNSUrl(const AStr: string): NSUrl;
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
procedure TForm1.Button1Click(Sender: TObject);
var
URL: String;
begin
URL := 'mailto:vorname.nachname@domain.invalid?subject=Test&body=Testmessage';
SharedApplication.openURL(StrToNSUrl(URL));
end;
function TForm1.SharedApplication: UIApplication;
begin
Result := TUIApplication.Wrap(TUIApplication.OCClass.SharedApplication);
end;
function TForm1.StrToNSUrl(const AStr: string): NSUrl;
begin
Result := TNSUrl.Wrap(TNSUrl.OCClass.URLWithString(NSSTR(AStr)));
end;
end.
Wenn es im iOS Simulator nicht funktioniert, liegt das daran, daß dort kein E-Mail Account definiert ist ![]()







