2012-01-11 32 views
52

Những gì tôi đã tìm thấy làKhởi chạy ứng dụng Apple Mail từ trong ứng dụng của riêng tôi?

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

Nhưng tôi chỉ muốn mở ứng dụng Thư không chỉ là chế độ xem nhà soạn nhạc. Chỉ ứng dụng thư ở trạng thái bình thường hoặc cuối cùng của nó.

Bất kỳ ý tưởng nào?

+0

bạn đã thử IMAP hoặc POP thay vì mailto? – Novarg

Trả lời

12

Vì cách duy nhất để khởi chạy các ứng dụng khác là sử dụng lược đồ URL của họ, cách duy nhất để mở thư là sử dụng giao thức mailto:. Thật không may cho trường hợp của bạn, sẽ luôn mở chế độ xem soạn thư.

+0

Hoàn toàn chắc chắn rằng KHÔNG CÓ CÁCH? Vâng, điều đó hút ... – cschuff

+0

@cschuff ngay cả bây giờ mà dường như là đúng sự thật.Tôi vừa thực hiện một chuyến tham quan khác thông qua cơ chế khởi chạy URL và mọi thông tin liên quan mà tôi có thể tìm thấy. Vẫn bị giới hạn khi khởi chạy với chế độ xem soạn thư được mở. – Thompsonian

+0

trừ khi không có tài khoản Thư nào được định cấu hình, trong trường hợp này, nó sẽ mở Thư bằng màn hình "Chào mừng bạn đến với Thư" mặc định hiển thị iCloud, Exchange, Google, Yahoo !, Aol., Outlook.com và Khác –

47
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]]; 
+14

Điều này mở ra trong chế độ xem soạn thư. – crizCraig

+0

Không hoạt động trong iOS 11. Có ai giúp tôi với điều này không? –

2

Nếu bạn đang sử dụng Xamarin nhà phát triển ứng dụng iOS, đây là C# tương đương để mở giao diện ứng dụng thư soạn:

string email = "[email protected]"; 
NSUrl url = new NSUrl(string.Format(@"mailto:{0}", email)); 
UIApplication.SharedApplication.OpenUrl(url); 
9

Chạy ứng dụng của bạn trên một thiết bị thực tế và gọi

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"[email protected]"]]; 

Lưu ý rằng dòng này không ảnh hưởng đến trình giả lập.

+9

+1 để lưu ý rằng điều này không hoạt động trên trình mô phỏng – enjayem

-5

Trong Swift:

let recipients = "[email protected]" 
let url = NSURL(string: "mailto:\(recipients)") 
UIApplication.sharedApplication().openURL(url!) 
5

Mở rộng về câu trả lời Amit của: này sẽ khởi chạy ứng dụng mail, với một email mới bắt đầu. Chỉ cần chỉnh sửa các chuỗi để thay đổi cách email mới bắt đầu.

//put email info here: 
NSString *[email protected]"[email protected]"; 
NSString *[email protected]"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]]; 
59

Dường như ứng dụng Mail hỗ trợ lược đồ url thứ 2 - message:// (tôi cho rằng) cho phép mở thư cụ thể nếu ứng dụng đã tìm nạp. Nếu bạn không cung cấp url tin nhắn, nó sẽ chỉ mở ứng dụng thư:

NSURL* mailURL = [NSURL URLWithString:@"message://"]; 
if ([[UIApplication sharedApplication] canOpenURL:mailURL]) { 
    [[UIApplication sharedApplication] openURL:mailURL]; 
} 
+2

Tự hỏi liệu ứng dụng Slack có sử dụng kỹ thuật này hay không. Họ đang khởi chạy mà không có chế độ xem thư soạn – Daniel

+1

đây phải là câu trả lời được chấp nhận. Câu trả lời được chấp nhận hiện tại nói rằng điều này là không thể nhưng sử dụng "message //" không mở ứng dụng email mà không có màn hình soạn thảo. –

+0

Tuyệt vời để tìm thấy điều này! Bạn có biết chúng tôi có thể sử dụng lược đồ URL đó để ứng dụng Thư mở tệp e-mail (_.msg_ từ Outlook hoặc tương tự) cung cấp URL nơi tệp được lưu trữ không? Vì vậy, một cái gì đó như 'message: // http: // domain/file.msg'. –

5

Bạn có thể khởi chạy bất kỳ ứng dụng nào trên iOS nếu bạn biết lược đồ URL của ứng dụng đó. Không biết rằng các chương trình ứng dụng Mail là công cộng, nhưng bạn có thể lén lút và thử điều này:

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

Props để Farhad Noorzay cho clueing tôi vào đây. Đó là một chút kỹ thuật đảo ngược API ứng dụng thư. Xem thêm thông tin ở đây: https://medium.com/@vijayssundaram/how-to-deep-link-to-ios-7-mail-6c212bc79bd9

15

phiên bản Swift của câu trả lời ban đầu Amit của:

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

Phiên bản này thực sự không hoạt động đối với tôi. Có vẻ như chỉ có chủ đề và nội dung nên được mã hóa dựa trên tài liệu của Apple tại đây: https://developer.apple.com/library/ios/featuredarticles/iPhoneURLScheme_Reference/MailLinks/MailLinks.html Vì vậy, đúng 'urlString' trong câu trả lời nên là 'let urlString =" mailto: \ (toEmail)? subject = \ (subject.stringByAddingPercentEncodingWithAllowedCharacters (.URLHostAllowedCharacterSet())!) & body = \ (body.stringByAddingPercentEncodingWithAllowedCharacters (.URLHostAllowedCharacterSet())!) "'. Mã này có thể được tái cấu trúc để định dạng tốt hơn và mã an toàn hơn mặc dù. – Zhao

0

trên nhanh chóng 2.3: mở hộp thư

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

Bạn có thể mở ứng dụng email mà không sử dụng mở xem soạn bằng cách sử dụng giao thức url message://

Các vấn đề liên quan