¿Iniciar la aplicación Apple Mail desde mi propia aplicación?

Lo que ya encontré es

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto:"]]; 

Pero solo quiero abrir la aplicación de correo no solo una vista de compositor. Solo la aplicación de correo en su estado normal o último.

¿Algunas ideas?

Como la única forma de iniciar otras aplicaciones es mediante el uso de sus esquemas de URL, la única forma de abrir el correo es mediante el uso del esquema mailto:. Lo cual, desafortunadamente para su caso, siempre abrirá la vista de redacción.

Aparentemente, la aplicación de correo admite el segundo esquema de url: message:// que (supongo) permite abrir un mensaje específico si fue capturado por la aplicación. Si no proporciona la url del mensaje, solo abrirá la aplicación de correo:

 NSURL* mailURL = [NSURL URLWithString:@"message://"]; if ([[UIApplication sharedApplication] canOpenURL:mailURL]) { [[UIApplication sharedApplication] openURL:mailURL]; } 
 NSString *recipients = @"mailto:first@example.com?cc=second@example.com,third@example.com&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]]; 

Versión rápida de la respuesta original de Amit:

Swift 2:

 func openMailApp() { let toEmail = "stavik@outlook.com" 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 = "stavik@outlook.com" 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) } } 

Ejecute su aplicación en un dispositivo real y llame

 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"your@email.com"]]; 

Tenga en cuenta que esta línea no tiene efecto en el simulador.

Puede abrir la aplicación de correo sin utilizar la apertura de la vista de redacción utilizando el message:// esquema url message://

Puede iniciar cualquier aplicación en iOS si conoce su esquema de URL. No sé si el esquema de la aplicación de correo es público, pero puede ser astuto e intentar esto:

 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"message:message-id"]]; 

Apoyos a Farhad Noorzay por darme pistas sobre esto. Es un poco de ingeniería inversa la API de la aplicación de correo. Más información aquí: https://medium.com/@vijayssundaram/how-to-deep-link-to-ios-7-mail-6c212bc79bd9

Ampliando la respuesta de Amit: Esto abrirá la aplicación de correo, con un nuevo correo electrónico iniciado. Simplemente edite las cadenas para cambiar cómo comienza el nuevo correo electrónico.

 //put email info here: NSString *toEmail=@"supp0rt.fl0ppyw0rm@gmail.com"; 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 está utilizando Xamarin para desarrollar una aplicación de iOS, aquí está el equivalente de C # para abrir la vista del compositor de la aplicación de correo:

 string email = "yourname@companyname.com"; NSUrl url = new NSUrl(string.Format(@"mailto:{0}", email)); UIApplication.SharedApplication.OpenUrl(url); 

en swift 2.3: abrir el buzón

 UIApplication.sharedApplication().openURL(NSURL(string: "message:")!) 

En Swift:

 let recipients = "someone@gmail.com" let url = NSURL(string: "mailto:\(recipients)") UIApplication.sharedApplication().openURL(url!)