Ce que j'ai déjà trouvé c'est
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto:"]];
Mais je veux juste ouvrir l'application Mail, pas seulement une vue du compositeur. Juste l'application de messagerie dans son état normal ou dernier.
Des idées?
Comme le seul moyen de lancer d'autres applications consiste à utiliser leurs modèles d'URL, le seul moyen d'ouvrir un courrier consiste à utiliser le modèle mailto: Ce qui, malheureusement pour votre cas, ouvrira toujours la vue de composition.
Apparemment, l'application Mail prend en charge le deuxième schéma d'URL - message://
qui (je suppose) permet d'ouvrir un message spécifique s'il a été récupéré par l'application. Si vous ne fournissez pas d'URL de message, il vous suffira d'ouvrir l'application de messagerie:
NSURL* mailURL = [NSURL URLWithString:@"message://"];
if ([[UIApplication sharedApplication] canOpenURL:mailURL]) {
[[UIApplication sharedApplication] openURL:mailURL];
}
NSString *recipients = @"mailto:[email protected][email protected],[email protected]&subject=Hello from California!";
NSString *body = @"&body=It is raining in sunny California!";
NSString *email = [NSString stringWithFormat:@"%@%@", recipients, body];
email = [email stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:email]];
Version rapide de la réponse originale d'Amit:
Swift 2:
func openMailApp() {
let toEmail = "[email protected]"
let subject = "Test email".stringByAddingPercentEncodingWithAllowedCharacters(.URLHostAllowedCharacterSet()
let body = "Just testing ...".stringByAddingPercentEncodingWithAllowedCharacters(.URLHostAllowedCharacterSet()
if let
urlString = ("mailto:\(toEmail)?subject=\(subject)&body=\(body)")),
url = NSURL(string:urlString) {
UIApplication.sharedApplication().openURL(url)
}
}
Swift 3.0:
func openMailApp() {
let toEmail = "[email protected]"
let subject = "Test email".addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)
let body = "Just testing ...".addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)
if let
urlString = "mailto:\(toEmail)?subject=\(subject)&body=\(body)",
url = URL(string:urlString) {
UIApplication.shared().openURL(url)
}
}
Vous pouvez ouvrir l'application de messagerie sans ouvrir la vue Composition à l'aide du schéma d'URL message://
.
Exécutez votre application sur un appareil réel et appelez
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"[email protected]"]];
Notez que cette ligne n'a aucun effet sur le simulateur.
Vous pouvez lancer n'importe quelle application sur iOS si vous connaissez son schéma d'URL. Je ne sais pas que le schéma de l'application Mail est public, mais vous pouvez être sournois et essayer ceci:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"message:message-id"]];
Des accessoires à Farhad Noorzay pour m'avoir informé de cela. C'est un peu de reverse engineering de l'API de l'application Mail. Plus d'infos ici: https://medium.com/@vijayssundaram/how-to-deep-link-to-ios-7-mail-6c212bc79bd9
En développant la réponse d’Amit: Il suffit de modifier les chaînes pour changer le début du nouvel email.
//put email info here:
NSString *toEmail=@"[email protected]";
NSString *subject=@"The subject!";
NSString *body = @"It is raining in sunny California!";
//opens mail app with new email started
NSString *email = [NSString stringWithFormat:@"mailto:%@?subject=%@&body=%@", toEmail,subject,body];
email = [email stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:email]];
Si vous utilisez Xamarin pour développer une application iOS, voici l'équivalent C # pour ouvrir la vue de composition d'application de messagerie:
string email = "[email protected]";
NSUrl url = new NSUrl(string.Format(@"mailto:{0}", email));
UIApplication.SharedApplication.OpenUrl(url);
sur Swift 2.3: ouvrir une boîte aux lettres
UIApplication.sharedApplication().openURL(NSURL(string: "message:")!)
Vous voudrez peut-être utiliser un pont de script. J'ai utilisé cette méthode dans mon application pour donner directement à l'utilisateur la possibilité d'envoyer des notifications par courrier électronique à l'aide du fichier Mail.app intégré. J'ai également construit une option pour le faire directement sur SMTP en alternative.
Mais puisque vous voulez utiliser la méthode Mail.app, vous pouvez trouver plus d’informations sur la façon de procéder, en procédant comme suit:
https://github.com/HelmutJ/CocoaSampleCode/tree/master/SBSendEmail
Bonne chance!
Il ouvrira l'application Mail par défaut avec la vue du compositeur:
NSURL* mailURL = [NSURL URLWithString:@"mailto://"];
if ([[UIApplication sharedApplication] canOpenURL:mailURL]) {
[[UIApplication sharedApplication] openURL:mailURL];
}
Il ouvrira l'application Mail par défaut:
NSURL* mailURL = [NSURL URLWithString:@"message://"];
if ([[UIApplication sharedApplication] canOpenURL:mailURL]) {
[[UIApplication sharedApplication] openURL:mailURL];
}
Swift 4/5 pour ouvrir l’application Mail par défaut sans affichage composé. Si l'application Mail est supprimée, UIAlert s'affiche automatiquement avec les options permettant de télécharger à nouveau l'application :)
UIApplication.shared.open(URL(string: "message:")!, options: [:], completionHandler: nil)