EasyMailSender という MFMailComposeViewController でのメール画面を簡単に扱えるライブラリを作りました。

CocoaPodsからインストールできます。

pod 'EasyMailSender'

使い方は名前の通り簡単で、Blockベースで初期設定とメール画面を閉じた時の処理が書けます。

- (IBAction)handleMailButton:(id) sender {
    NSString *attachedText = @"text";
    EasyMailAlertSender *mailSender = [EasyMailAlertSender easyMail:^(MFMailComposeViewController *controller) {
        // Setup
        [controller addAttachmentData:[attachedText dataUsingEncoding:NSUTF8StringEncoding] mimeType:@"plain/text" fileName:@"test.txt"];
    } complete:^(MFMailComposeViewController *controller, MFMailComposeResult result, NSError *error) {
        // When Sent/Cancel - MFMailComposeViewControllerDelegate action
        [controller dismissViewControllerAnimated:YES completion:nil];
    }];
    [mailSender showFromViewController:self];
}

最初のBlockでは、MFMailComposeViewControllerのインスタンスが渡ってくるので、添付や送信先の設定をします。

complete BlockではのMFMailComposeViewControllerのdelegateと同じようにMFMailComposeResultが渡ってくるのでそれに対して画面を閉じたりします。

最後に、

[mailSender showFromViewController:self];

で実際に画面にモーダル表示します。

ライブラリ自体はMFMailComposeViewControllerを包んでるだけなので、カテゴリやruntimeの拡張などは無いので特殊な事はしていません。

zoul/Lambda-Alert を参考に作りました。

Post Navigation