Je travaille sur une simple application rapide où l'utilisateur entre une adresse e-mail et appuie sur un bouton qui ouvre l'application de messagerie, avec l'adresse saisie dans la barre d'adresse. Je sais comment faire cela en Objective-C, mais j'ai du mal à le faire fonctionner dans Swift.
119
Bien que les autres réponses soient toutes correctes, vous ne pouvez jamais savoir si l'application Mail d'Apple est installée sur l'iPhone / iPad qui exécute votre application, car elle peut être supprimée par l'utilisateur.
Il est préférable de prendre en charge plusieurs clients de messagerie. Le code suivant gère l'envoi des e-mails d'une manière plus gracieuse. Le flux du code est:
mailto:..
qui invite l'utilisateur à installer l'application Mail d'Apple.Le code est écrit en Swift 5 :
Veuillez noter que j'ai volontairement oublié le corps de l'application Outlook, car elle ne peut pas l'analyser.
Vous devez également ajouter le code suivant au
Info.plist
fichier qui répertorie les schémas de requête URl utilisés.la source
isHTML
dans le code ci-dessus sur true. Pour les autres clients, cela ne semble pas possible, pour plus d'informations, voir stackoverflow.com/questions/5620324/mailto-link-with-html-bodyJe ne sais pas si vous souhaitez basculer vers l'application de messagerie elle-même ou simplement ouvrir et envoyer un e-mail. Pour cette dernière option liée à un bouton IBAction:
la source
class myClass: UIViewController, MFMailComposeViewControllerDelegate {
'NSInvalidArgumentException', reason: 'Application tried to present a nil modal view controller on target
. L'application plante sur certains appareils (iPhone 5, iPhone 6 et iPad Mini)Dans Swift 3, vous vous assurez d'ajouter
import MessageUI
et de respecter leMFMailComposeViewControllerDelegate
protocole.Protocole:
la source
Pour Swift 4.2+ et iOS 9+
Remplacez [email protected] par l'adresse e-mail souhaitée.
la source
Swift 2, avec contrôle de disponibilité :
la source
Voici à quoi il ressemble pour Swift 4:
la source
Réponse mise à jour de Stephen Groom pour Swift 3
la source
Voici une mise à jour pour Swift 4 si vous cherchez simplement à ouvrir le client de messagerie via un
URL
:Cela a parfaitement fonctionné pour moi :)
la source
Il s'agit d'une solution simple en 3 étapes dans Swift.
Ajouter pour conformer le délégué
Et créez simplement votre méthode:
la source
Vous devriez essayer d'envoyer avec le composeur de courrier intégré, et si cela échoue, essayez avec share:
la source
Notez que tous les utilisateurs n'ont pas configuré leur appareil pour envoyer des e-mails, c'est pourquoi nous devons vérifier le résultat de canSendMail () avant d'essayer d'envoyer. Notez également que vous devez intercepter le rappel didFinishWith pour fermer la fenêtre de messagerie.
la source
Dans le contrôleur d'affichage à partir duquel vous souhaitez que votre application de messagerie s'ouvre au toucher.
Mettez cette fonction dans votre contrôleur.
Étendez votre View Controller et conformez-vous à MFMailComposeViewControllerDelegate .
Mettez cette méthode et gérez l'échec, l'envoi de vos mails.
la source
Pour ceux d'entre nous qui sont encore à la traîne sur Swift 2.3, voici la réponse de Gordon dans notre syntaxe:
la source
Donnez à l'utilisateur le choix de nombreuses options de messagerie (comme iCloud, google, yahoo, Outlook.com - si aucun e-mail n'est préconfiguré dans son téléphone) pour envoyer un e-mail.
la source