2012年3月28日水曜日

添付つきメール送信


iOSアプリからMFMailComposeViewControllerを使用してメール送信することができます。

プロジェクトにMessageUI.frameworkを追加する。
MFMailComposeViewControllerを呼ぶオブジェクト(おそらくはUIViewControllerまたはそそのサブクラスに)MFMailComposeViewControllerDelegateプロトコルをクラス宣言に追加する。

#import <MessageUI/MFMailComposeViewController.h>

@interface MyViewController : UIViewController <MFMailComposeViewControllerDelegate>
@end

//MyViewControllerのimplementation
//[メール]ボタンがタップされた
- (IBAction)mySendMailMethod:(id)sender
{
    //メール送信可能な設定になっているかチェック
    if (![MFMailComposeViewController canSendMail])
    {
        //エラー処理
        return;
    }
    MFMailComposeViewController *mailView = [[MFMailComposeViewController alloc] init];
//メール送信後のメッセージを受け取るため、mailViewのdelegateにselfをセット。
    mailView.mailComposeDelegate = self;
//アドレス、サブジェクト等の設定。
    [mailView setToRecipients:[NSArray arrayWithObjects:@"someone@somewhere.com", nil]];
    [mailView setSubject:@"someSubject"];
    [mailView setMessageBody:@"someMessage" isHTML:NO];
    //添付データをセット。
    NSData *binData = someBinData;
    if (binData != nil) {
        [mailView addAttachmentData:binData mimeType:@"application/octet-stream" fileName:@"someFileName"];
    }
//MFMailComposeViewControllerをモーダルビューで表示。
    [self presentModalViewController:mailView animated:YES];
}

#pragma mark - <UINavigationControllerDelegate>

- (void)mailComposeController:(MFMailComposeViewController*)controller
          didFinishWithResult:(MFMailComposeResult)result
                        error:(NSError*)error
{
    //必要であればエラー処理
    //モーダルビュー解除
    [self dismissModalViewControllerAnimated:YES];
}

参考: How to Send Email with Attachments

mailto:スキーマでメールアプリを起動することもできます。

0 件のコメント: