Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   [iOS] Mail versenden (https://www.delphipraxis.net/190827-%5Bios%5D-mail-versenden.html)

Devil1925 11. Nov 2016 13:44

[iOS] Mail versenden
 
Hallo,
ich bräuchte mal eine Gedankenstütze... Ich möchte aus meiner iOS Anwendung heraus den Standardmailclient öffnen, und hier eine neue Mail auf machen, in welcher bereits eine E-Mailadresse eingetragen ist. Jetzt habe ich mehrere Lösungen gesehen, bei welchen das ganze wie beim Webseitenaufruf gelöst wurde, allerdings dann statt mit einem 'http://' mit einem 'mailto:'.

Delphi-Quellcode:
procedure SendMail(Mail:String);
var NSU:NSUrl;
    MyURL:String;
Begin
  if TRIM(Mail) <> '' then
  Begin
    MyURL := 'mailto:' + TRIM(Mail);
    NSU := StrToNSUrl(TIdURI.URLEncode(myURL));
    if SharedApplication.canOpenURL(NSU) then
    Begin
      SharedApplication.openURL(NSU);
    End;
  End;
End;
Für den Webseitenaufruf funktioniert das auch wunderbar (dann halt mit 'http://' statt 'mailto:'), allerdings erhalte ich bei der Übergabe einer Mail immer den Fehler "Protokollfeld ist leer". Soweit ich herausgefunden habe, erscheint dieser Fehler, wenn eine ungültige URL übergeben wird. Allerdings ist die URL 'mailto:test@mail.com' doch korrekt oder? (oder auch eine existierende Mail adresse)

wo habe ich jetzt meinen Knoten im Hirn? hat da jemand gerade mal so eine idee? Ich bin vermutlich einfach nur blind :roll:

DeddyH 11. Nov 2016 14:58

AW: [iOS] Mail versenden
 
Bei mir sieht das so aus (wir haben vermutlich dieselbe Originalquelle):
Delphi-Quellcode:
function OpenURL(const URL: string;
  const DisplayError: Boolean = False): Boolean;
var
  s: string;
  NSU: NSUrl;
begin
  s := URL;
  if not AnsiStartsText('mailto:', URL) then
    s := TIdURI.URLEncode(s);
  // iOS doesn't like spaces, so URL encode is important.
  NSU := StrToNSUrl(s);
  if SharedApplication.canOpenURL(NSU) then
    exit(SharedApplication.OpenURL(NSU))
  else
    begin
      if DisplayError then
        ShowMessage('Error: Opening "' + URL + '" not supported.');
      exit(False);
    end;
end;

RWarnecke 11. Nov 2016 16:30

AW: [iOS] Mail versenden
 
Der Link wäre noch eine alternative und bietet laut der Beschreibung auch noch mehr Optionen.

AndyDF 12. Nov 2016 18:46

AW: [iOS] Mail versenden
 
Ich verwende dafür die Komponenten von JVESoft. Bin damit recht zufrieden und es wird noch vieles mehr geboten.

Link: http://www.jvesoft.com/wp/

Devil1925 14. Nov 2016 14:36

AW: [iOS] Mail versenden
 
@DeddyH

ich habe deinen Code mal einfach ausprobiert, und bekomme die Fehlermeldung auch bei diesem Code an der Stelle
Delphi-Quellcode:
s := TIdURI.URLEncode(s);
Protokollfeld ist leer

Kannst du mir erklären was "AnsiStartsText" tut? Das kenne ich nicht und die IDE auch nicht.

@AndyDF eine Neue Komponetne kommt vorerst nicht infrage, wäre halt schön wenn das mit bordeigenen Mitteln funktionieren würde.

DeddyH 14. Nov 2016 15:03

AW: [iOS] Mail versenden
 
AnsiStartsText, Du musst dazu StrUtils einbinden, hatte ich vergessen zu erwähnen.

Devil1925 14. Nov 2016 15:50

AW: [iOS] Mail versenden
 
Danke, kein Problem!

Aber hast du eine Idee warum das mit dem Mailen nicht funktioniert?
Funktioniert denn der Code bei dir? Und wie Sieht dein Aufruf aus?

Ich rufe das Folgendermaßen auf: ist das Falsch?

Delphi-Quellcode:
OpenURL('mailto:'+Query.FieldbyName('Email').AsString);


(Das Feld EMail beinhaltet hier die Emailadresse, wer häts erwartet)

DeddyH 14. Nov 2016 15:58

AW: [iOS] Mail versenden
 
Bei mir funktioniert mein geposteter Code, sonst hätte ich ihn ja nicht gepostet. Hast Du ihn irgendwie geändert? Was sagt der Debugger, wird die "URLEncode" angesprochen, trotz "mailto:'?

bra 14. Nov 2016 16:03

AW: [iOS] Mail versenden
 
Was passiert denn, wenn du (unabhängig von deiner App) eine HTML-Seite mit mailto:xx erstellst und mal dort den Link anklickst. Funktioniert es dort? Nicht dass es ein allgemeines Einstellungsproblem am Gerät ist.

Devil1925 14. Nov 2016 16:07

AW: [iOS] Mail versenden
 
nun wird URLEncode nicht angesprochen, allerdings liefert mir CanopenURL den Wert "FALSE" zurück.

Kurze idee: Kann das daran Liegen, dass ich das nur im Simulator teste? also das mir False zurück geliefert wird? ist mir gerade so eingefallen...

ich werde das morgen mal auf einem Echtgerät testen, ich vermute irgendwie das mir deswegen False zurück geliefert wird, melde mich dann morgen noch mal!

Jetzt erstmal einen schönen Feierabend!


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:33 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz