从我自己的应用程序启动苹果邮件应用程序?

我已经find的是

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

但是我只想打开邮件应用程序,而不仅仅是composer php视图。 只是在正常或最后一个状态的邮件应用程序。

有任何想法吗?

由于启动其他应用程序的唯一方法是使用它们的URLscheme,打开邮件的唯一方法是使用mailto:scheme。 不幸的是,你的情况,总是会打开撰写视图。

显然邮件应用程序支持第二个URLscheme – message://哪(我想)允许打开特定的消息,如果它被应用程序提取。 如果您没有提供邮件url,它只会打开邮件应用程序:

 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]]; 

原文阿米特的答案是:

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) } } 

在真实设备上运行您的应用程序,然后致电

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

注意,这条线对模拟器不起作用。

扩展Amit的答案:这将启动邮件应用程序,并启动一个新的电子邮件。 只需编辑string即可更改新电子邮件的开始方式。

 //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]]; 

如果您知道它的URLscheme,您可以在iOS上启动任何应用程序。 不知道邮件应用程序的scheme是公开的,但你可以偷偷摸摸,试试这个:

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

道具Farhad Noorzay提供了这方面的线索。 这是一些反向工程的邮件应用程序API。 更多信息: https : //medium.com/@vijayssundaram/how-to-deep-link-to-ios-7-mail-6c212bc79bd9

如果您使用Xamarin来开发一个iOS应用程序,这里是C#相当于打开邮件应用程序作曲者视图:

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

您可以打开邮件应用程序,而无需使用urlscheme打开撰写视图message://

快速2.3:打开邮箱

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

在Swift中:

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