

Swiftを使用して、アプリ内でメーラーを呼び出し、  
呼び出したときに自動で宛先メールアドレスと件名を入力させたいと考えており、以下のプログラムを組みました。

[code]

    //メーラーのURLを生成.
    let myMailURL : NSURL = NSURL(string: "mailto:1234@gmail.xxx")!
    let myMailSub : NSURL = NSURL(string: "Subject=\(dateString)")!
    
    UIApplication.sharedApplication().openURL(myMailURL)//メアド
    UIApplication.sharedApplication().openURL(myMailSub)//件名
    
[/code]

シミュレーターやデバッグではエラーが起きないのですが、  
実機で確認した場合、メーラーを呼び出したと同時に落ちてしまいます。

自分の予想では、件名が間違えていると思っており、Subjectがおかしいと思いました。

よろしければご教授下さい。  
よろしくお願い致します。


CC BY-SA 3.0
2015-01-31T19:28:49.603
5669
2015-02-03T03:18:40.530
2015-02-03T03:18:40.530
49
7989
question
swift iphone
メーラー呼び出しのとき自動でメールの件名を載せる


2番目のURLはmailto:スキームになっていないのでメーラーは起動しません。1つにまとめて

[code]

    NSURL(string: "mailto:1234@gmail.xxx?subject=(dateString)")
    
[/code]

とする必要があります。また`dateString`にURLで利用できないスラッシュ等が含まれているのであれば

[code]

    var escapedDateString = dateString.stringByAddingPercentEncodingWithAllowedCharacters(.URLHostAllowedCharacterSet())
    
[/code]

とエスケープするべきです。

しかし別の質問と合わせると宛先、タイトル、添付ファイルを指定してメールを送信したいという事でしょうか？でしたら`openURL:`では添付ファイルに対応していませんし、別の連携方法である`UIDocumentInteractionController`ではファイルを他のアプリで開くということしか指定できないので[MFMailComposeViewController](http://totutotu.hatenablog.com/entry/2014/12/11/%E3%80%90swift%E3%80%91%E3%82%A2%E3%83%97%E3%83%AA%E5%86%85%E3%81%A7mailer%E3%82%92%E7%AB%8B%E3%81%A1%E4%B8%8A%E3%81%92%E3%81%A6%E3%83%BC%E3%83%90%E3%82%B0%E3%83%AA%E3%83%9D%E3%83%BC%E3%83%88%E6%A9%9F)を使用するのが良いと思います。


CC BY-SA 3.0
2015-01-31T22:26:47.267
5672
2015-02-01T00:22:04.487
2015-02-01T00:22:04.487
5750
5750
5669
answer