web-dev-qa-db-ja.com

Apple自分のアプリ内からアプリをメールしますか?

私がすでに見つけたのは

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

ただし、メールアプリはcomposerビューだけでなく、通常の状態または最後の状態のメールアプリのみを開きます。

何か案は?

58
cschuff

どうやらメールアプリケーションは2番目のURLスキームをサポートしているようです-message://(私が思うに)特定のメッセージがアプリケーションによって取得された場合、それを開くことができます。メッセージURLを指定しない場合、メールアプリケーションが開きます。

NSURL* mailURL = [NSURL URLWithString:@"message://"];
if ([[UIApplication sharedApplication] canOpenURL:mailURL]) {
    [[UIApplication sharedApplication] openURL:mailURL];
}
79
Vladimir
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]];
47
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)
    }
}
18
VojtaStavik

他のアプリケーションを起動する唯一の方法はURLスキームを使用することなので、メールを開く唯一の方法はmailto:スキームを使用することです。残念ながら、これは常に作成ビューを開きます。

11
Briggs

URLスキームmessage://を使用すると、作成ビューを開かずにメールアプリを開くことができます

10
Jesse S.

実際のデバイスでアプリを実行して呼び出します

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

この行はシミュレータには影響しないことに注意してください。

9
catanore

URLスキームを知っていれば、iOSでアプリを起動できます。 Mailアプリのスキームが公開されていることを知りませんが、こっそりしてこれを試すことができます:

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

これを手がかりにしてくれたFarhad Noorzayに小道具。 MailアプリAPIのリバースエンジニアリングです。詳細はこちら: https://medium.com/@vijayssundaram/how-to-deep-link-to-ios-7-mail-6c212bc79bd9

7
Diogenes

Amitの答えを拡大:これにより、メールアプリが起動し、新しいメールが開始されます。文字列を編集して、新しい電子メールの開始方法を変更するだけです。

//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]];
5
Stan Tatarnykov

Xamarinを使用してiOSアプリケーションを開発している場合、メールアプリケーションを開くのと同等のC#を以下に示しますcomposer view:

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

on Swift 2.3:メールボックスを開く

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

スクリプトブリッジを使用することもできます。アプリでこのメソッドを使用して、組み込みのMail.appを使用して電子メール通知を送信するオプションをユーザーに直接提供しました。また、これを代替手段としてSMTP経由で直接実行するオプションも作成しました。

しかし、Mail.appメソッドを使用したいので、以下に従うことにより、その解決方法の詳細を見つけることができます。

https://github.com/HelmutJ/CocoaSampleCode/tree/master/SBSendEmail

がんばろう!

0
user2275294

composerビューでデフォルトのメールアプリを開きます:

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

デフォルトメールアプリを開きます:

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

作成ビューなしでデフォルトのメールアプリを開くためのSwift 4/5。メールアプリが削除されると、アプリを再ダウンロードするオプションを含むUIAlertが自動的に表示されます:)

UIApplication.shared.open(URL(string: "message:")!, options: [:], completionHandler: nil)
0
Ondřej H