Ich arbeite an einer einfachen schnellen App, in der der Benutzer eine E-Mail-Adresse eingibt und eine Taste drückt, die die E-Mail-App mit der eingegebenen Adresse in der Adressleiste öffnet. Ich weiß, wie man das in Objective-C macht, aber ich habe Probleme, es in Swift zum Laufen zu bringen.
118
Während andere Antworten alle richtig sind, können Sie nie wissen, ob auf dem iPhone / iPad, auf dem Ihre Anwendung ausgeführt wird, die Mail-App von Apple installiert ist oder nicht, da sie vom Benutzer gelöscht werden kann.
Es ist besser, mehrere E-Mail-Clients zu unterstützen. Der folgende Code behandelt das Senden von E-Mails auf elegantere Weise. Der Ablauf des Codes ist:
mailto:..
, der den Benutzer auffordert, die Mail-App von Apple zu installieren.Code ist in Swift 5 geschrieben :
Bitte beachten Sie, dass ich den Textkörper für die Outlook-App absichtlich verpasst habe, da er nicht analysiert werden kann.
Sie müssen der
Info.plist
Datei außerdem folgenden Code hinzufügen , der die verwendeten URl-Abfrageschemata auf die Whitelist setzt.quelle
isHTML
den obigen Code auf true setzen. Für andere Clients scheint dies nicht möglich zu sein. Weitere Informationen findenIch bin mir nicht sicher, ob Sie zur Mail-App selbst wechseln oder einfach eine E-Mail öffnen und senden möchten. Für die letztere Option, die mit einer Schaltfläche IBAction verknüpft ist:
quelle
class myClass: UIViewController, MFMailComposeViewControllerDelegate {
'NSInvalidArgumentException', reason: 'Application tried to present a nil modal view controller on target
. App stürzt in einigen Geräten (iPhone 5, iPhone 6 und iPad Mini) abIn Swift 3 stellen Sie sicher, dass
import MessageUI
dasMFMailComposeViewControllerDelegate
Protokoll hinzugefügt wird und dass es dem Protokoll entspricht.Protokoll:
quelle
Swift 2, mit Verfügbarkeitsprüfung :
quelle
Für Swift 4.2+ und iOS 9+
Ersetzen Sie [email protected] durch Ihre gewünschte E-Mail-Adresse.
quelle
So sieht es für Swift 4 aus:
quelle
Aktualisierte Antwort von Stephen Groom für Swift 3
quelle
Hier ist ein Update für Swift 4, wenn Sie den Mail-Client einfach über Folgendes öffnen möchten
URL
:Das hat bei mir ganz gut geklappt :)
quelle
Dies ist eine einfache Lösung von 3 Schritten in Swift.
Hinzufügen, um den Delegaten anzupassen
Und erstellen Sie einfach Ihre Methode:
quelle
Sie sollten versuchen, mit dem integrierten Mail-Composer zu senden. Wenn dies fehlschlägt, versuchen Sie es mit share:
quelle
Beachten Sie, dass nicht alle Benutzer ihr Gerät für das Senden von E-Mails konfiguriert haben. Aus diesem Grund müssen wir das Ergebnis von canSendMail () überprüfen, bevor wir versuchen, E-Mails zu senden. Beachten Sie auch, dass Sie den Rückruf von didFinishWith abfangen müssen, um das E-Mail-Fenster zu schließen.
quelle
In der Ansichtssteuerung, von der aus Ihre E-Mail-App geöffnet werden soll.
Fügen Sie diese Funktion in Ihren Controller ein.
Erweitern Sie Ihren View Controller und passen Sie sich dem MFMailComposeViewControllerDelegate an .
Setzen Sie diese Methode ein und behandeln Sie den Fehler, indem Sie Ihre Mails senden.
quelle
Für diejenigen von uns, die bei Swift 2.3 immer noch zurückbleiben, ist hier Gordons Antwort in unserer Syntax:
quelle
Geben Sie dem Benutzer die Möglichkeit, viele E-Mail-Optionen (wie iCloud, Google, Yahoo, Outlook.com - wenn auf seinem Telefon keine E-Mail vorkonfiguriert ist) auszuwählen, um E-Mails zu senden.
quelle