iOS開発——メール送信


文:UniverCoreオリジナルブログを転載する場合は、ハイパーリンクで文章を表記してください. 元の出所、作者の情報と本声明.http://blog.csdn.net/univcore/article/details/15028519
iOS開発では、メールを送信する機能を適用するには様々な方法があります.本論文で紹介したメール送信機能は、Message UI Framewarkによって提供され、このフレームワークはiPhone SDKの中で最も簡単なフレームワークである.クラス、ビューコントローラ、プロトコールからなります.
直感的にデモンストレーションするために、Step byを通します. Stepのデモでこの方法の基本的な使い方を説明します.
まず、Single Viewのサンプルアイテムを作成します.ここで、Mail System DemoというSingle Viewプロジェクトを作成しました.その後、View Controllerに対応するxibにボタンを追加し、このボタンの応答方法を実現するために、方法の内容は一時的に空にしてもいいです.後でメール送信方法を呼び出す文をこのボタンの方法に書き込みます.
次に、先に紹介したように、メール送信の機能はMessage UI Frame eborkによって提供されていますので、Buil PhisesにMessage UID.frame eworkフレームを追加します.その後、View Controller.hファイルに次のコードを入れ、ヘッダファイルを導入し、MFMail Compseview Controller Delegateプロトコルを採用する.
#import <MessageUI/MFMailComposeViewController.h>

@interface ViewController : UIViewController <MFMailComposeViewControllerDelegate>
View Controller.mファイルでは、以下のようにメールを送るコア方法を実現します.
- (void)sendEmail
{
    MFMailComposeViewController *sendMailViewController = [[MFMailComposeViewController alloc] init];
    sendMailViewController.mailComposeDelegate = self;
   
    //       
    [sendMailViewController setSubject:@"Test Message"];
    
    /*
     *      ,      
     */
    //       
    [sendMailViewController setToRecipients:[NSArray arrayWithObject:@"[email protected]"]];
    //   CC
    [sendMailViewController setCcRecipients:[NSArray arrayWithObject:@"[email protected]"]];
    //   BCC
    [sendMailViewController setBccRecipients:[NSArray arrayWithObject:@"[email protected]"]];
    
    /* 
     *       ,      
     */
    //       
    [sendMailViewController setMessageBody:@"Hello World!
Is everything OK?" isHTML:NO]; // HTML (HTML ) //[mailVC setMessageBody:@"<HTML><B>Hello World!</B><BR/>Is everything OK?</HTML>" isHTML:YES]; // NSString *path = [[NSBundle mainBundle] pathForResource:@"feedback" ofType:@"png"]; NSData *data = [NSData dataWithContentsOfFile:path]; [sendMailViewController addAttachmentData:data mimeType:@"image/png" fileName:@"feedback"]; // [self presentViewController:sendMailViewController animated:YES completion:nil]; }
その後、私たちはViewController.mファイルにMFMail Compseview Controller Delegateプロトコルにおける方法を実現し、ユーザが送信するかどうか、キャンセルするかにかかわらず、システムがメール送信を実現できるかどうかにかかわらず
この方法はいずれも折り返しられます.
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
    switch (result) {
        case MFMailComposeResultCancelled: {
            NSLog(@"Mail send canceled.");
            break;
        }
        case MFMailComposeResultSaved: {
            NSLog(@"Mail saved.");
            break;
        }
        case MFMailComposeResultSent: {
            NSLog(@"Mail sent.");
            break;
        }
        case MFMailComposeResultFailed: {
            NSLog(@"Mail sent Failed.");
            break;
        }
        default:
            break;
    }
    
    [self dismissViewControllerAnimated:YES completion:nil];
}
最後に、ボタンの応答方法でメールの送信方法を呼び出します.ここでは、デバイスがメールで送信できるかどうかの判断が必要です.もしユーザーがメールクライアントにアカウントを設定しているなら、私たちは直接にメールを送る方法を呼び出します.そうでないと、私たちは先に[UAppliation sharedAppliation]を使います. オプンURL:]メソッドは、システムのメールクライアントをロードし、ユーザーに先にメールボックスの構成を行わせる.
- (IBAction)sendEmailBtnPressed:(id)sender
{
    Class mailClass = (NSClassFromString(@"MFMailComposeViewController"));
    if (mailClass != nil)
    {
        if ([mailClass canSendMail])
        {
            [self sendEmail];   //          
        }
        else {
            [self launchMailAppOnDevice];   //          
        }
    }
    else {
        [self launchMailAppOnDevice];    //          
    }
    
}
システムメールクライアントを呼び出してメールボックスの設定を行う方法は以下の通りです.
-(void)launchMailAppOnDevice
{
    NSString *recipients = @"mailto:[email protected]&subject=my email!";
    //@"mailto:[email protected][email protected],[email protected]&subject=my email!";
    NSString *body = @"&body=email body!";
    NSString *email = [NSString stringWithFormat:@"%@%@", recipients, body];
    email = [email stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
    [[UIApplication sharedApplication] openURL: [NSURL URLWithString:email]];
}
ここでメールを送る機能を実現するコードは全部完成しました.今すぐプログラムを実行してテストしてみてください.
この方法の優れた長所は簡単で便利で、機能も全面的で、ほとんどのアプリの需要を満たすことができます.もちろん、それは明らかに劣勢があります.iOSシステムは私たちのためにメールのUIを提供してくれましたが、私たちは全く注文できません.これはそれらのオーダーを自分のスタイルにしたAppを見ていて、しりごみします.このように使うと、間違いなく目立ってしまうからです.