2012-01-11 9 views
52

Co ja już znalazłem toUruchamianie aplikacji Apple Mail z poziomu mojej aplikacji?

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

Ale ja po prostu chcę, aby otworzyć aplikację Mail nie tylko widok kompozytor. Tylko aplikacja pocztowa w normalnym lub ostatnim stanie.

Wszelkie pomysły?

+0

próbowałaś IMAP lub POP zamiast mailto? – Novarg

Odpowiedz

12

Ponieważ jedynym sposobem na uruchomienie innych aplikacji jest użycie ich schematów URL, jedynym sposobem na otwarcie poczty jest użycie schematu mailto :. Które, niestety dla twojego przypadku, zawsze otworzy widok komponowania.

+0

Absolutnie pewien, że nie ma ŻADNEGO DROGI? Cóż, to jest do bani ... – cschuff

+0

@cschuff nawet teraz, że wydaje się być prawdą.Właśnie odbyłem kolejną wycieczkę przez mechanizm uruchamiania URL i wszelkie powiązane informacje, które mogłem znaleźć. Nadal ograniczone do uruchamiania przy otwartym widoku komponowania. – Thompsonian

+0

, chyba że nie skonfigurowano żadnych kont pocztowych, w takim przypadku otworzy się wiadomość Mail z domyślnym ekranem "Witamy w Poczcie", zawierającym iCloud, Exchange, Google, Yahoo !, Aol., Outlook.com i inne –

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

Zostanie otwarty w widoku szczegółowym. – crizCraig

+0

Nie działa w systemie iOS 11. Czy ktoś może mi w tym pomóc? –

2

Jeśli używasz Xamarin do programisty aplikacji na iOS, tutaj jest C# równoważne otworzyć widok kompozytor aplikacja Mail:

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

uruchomić aplikację na prawdziwym urządzeniu i zadzwonić

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

Należy zauważyć, że linia ta nie ma wpływu na symulator.

+9

+1 za stwierdzenie, że to nie działa na symulatorze. – enjayem

-5

w Swift:

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

Rozwijając na odpowiedź Amit za: Spowoduje to uruchomienie aplikacji poczty, a zaczął się nowy e-mail. Po prostu edytuj ciągi znaków, aby zmienić sposób, w jaki rozpoczyna się nowa wiadomość e-mail.

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

Widocznie aplikacja Poczta obsługuje 2nd schemat URL - message:// który (jak przypuszczam) pozwala otworzyć konkretną wiadomość, jeśli zostało pobrane przez aplikację. Jeśli nie podasz adresu URL wiadomości, otworzy się tylko aplikacja pocztowa:

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

Zastanawiasz się, czy aplikacja Slack używa tej techniki. Uruchamiają się bez widoku do komponowania wiadomości e-mail. – Daniel

+1

to powinna być akceptowana odpowiedź. Obecna zaakceptowana odpowiedź mówi, że nie jest to możliwe, ale użycie "message //" powoduje otwarcie aplikacji e-mail bez ekranu tworzenia wiadomości. –

+0

Wspaniale to znaleźć! Czy wiesz, czy możemy użyć tego schematu URL, aby aplikacja Mail otworzyła plik e-mail (_.msg_ z Outlooka lub podobnego) podając adres URL, w którym znajduje się plik? Więc coś w stylu 'message: // http: // domain/file.msg'. –

5

Możesz uruchomić dowolną aplikację na iOS, jeśli znasz jej schemat URL. Nie wiem, że program Poczta aplikacja jest publiczna, ale można być podstępne i spróbuj tego:

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

podpory Farhad Noorzay dla clueing mnie do tego. To trochę inżynierii wstecznej interfejsu API aplikacji Mail. Więcej informacji tutaj: https://medium.com/@vijayssundaram/how-to-deep-link-to-ios-7-mail-6c212bc79bd9

15

Swift w wersji oryginalnej odpowiedzi Amit za:

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

Ta wersja właściwie nie działa dla mnie. Wydaje się, że tylko podmiot i ciało powinny być zakodowane w oparciu o dokument Apple'a tutaj: https://developer.apple.com/library/ios/featuredarticles/iPhoneURLScheme_Reference/MailLinks/MailLinks.html Tak więc właściwy 'urlString' w odpowiedzi powinien be 'let urlString =" mailto: \ (toEmail)? subject = \ (subject.stringByAddingPercentEncodingWithAllowedCharacters (.URLHostAllowedCharacterSet())! & body = \ (body.stringByAddingPercentEncodingWithAllowedCharacters (.URLHostAllowedCharacterSet())! "". Ten kod może być refaktoryzowany w celu lepszego formatowania i bezpieczniejszego kodu. – Zhao

0

na szybkiej 2.3: otwarte skrzynka pocztowa

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

Można otworzyć aplikację poczty bez korzystania otwarcie widoku tworzenia wiadomości za pomocą schematu URL message://

Powiązane problemy