![]() |
[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:
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)
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; wo habe ich jetzt meinen Knoten im Hirn? hat da jemand gerade mal so eine idee? Ich bin vermutlich einfach nur blind :roll: |
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; |
AW: [iOS] Mail versenden
Der
![]() |
AW: [iOS] Mail versenden
Ich verwende dafür die Komponenten von JVESoft. Bin damit recht zufrieden und es wird noch vieles mehr geboten.
Link: ![]() |
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:
Protokollfeld ist leer
s := TIdURI.URLEncode(s);
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. |
AW: [iOS] Mail versenden
![]() |
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) |
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:'?
|
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.
|
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 21:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz