1

シンプルなアプリを作成しています (Xcode 4.2 と iOS 5 を使用し、iOS シミュレーターを使用してテストします)。これにより電子メールが送信され、電子メール作成ウィンドウが通常どおり非モーダル形式で開きます。電子メール作成の可能な結果の 1 つは、「下書きとして保存」、つまり MFMailComposeResultSaved です。このような場合、保存した下書きを取得するにはどうすればよいですか? または、さらに良いことに、このオプションを廃止できますか? (つまり、ユーザーが「メール作成」ウィンドウで変更を加えても、「下書きとして保存」オプションは表示されませ。何か助けてください。

ViewController.h (ヘッダー ファイル) 内

-(void)showEmailComposer;
-(void) displayComposerSheet;

ViewController.m ファイル内:

-(void)showEmailComposer {

    NSLog(@"showEmailComposer: begin");

Class mailClass = (NSClassFromString(@"MFMailComposeViewController"));
if (mailClass != nil)
{
    if ([mailClass canSendMail]) {
        NSLog(@"showEmailComposer: Calling displayComposerSheet");
        [self displayComposerSheet];

    }
}
 }


#pragma mark -
#pragma mark Compose Mail

-(void) displayComposerSheet {
mailComposer = [[MFMailComposeViewController alloc] init];
mailComposer.mailComposeDelegate = self;
[self presentModalViewController:mailComposer animated:YES];
}


-(void) mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error {

NSString *alertTitle;
NSString *alertMsg;

// Notifies users on errors, if any
switch (result) {

    case MFMailComposeResultCancelled:
        alertTitle = @"Cancelled";
        alertMsg = @"Mail composition got cancelled";
        break;
    case MFMailComposeResultSaved:
        alertTitle = @"Success - Saved";
        alertMsg = @"Mail got saved successfully!";
        break;
    case MFMailComposeResultSent:
        alertTitle = @"Success - Sent";
        alertMsg = @"Mail sent successfully!";
        break;
    case MFMailComposeResultFailed:
        alertTitle = @"Failure";
        alertMsg = @"Sending the mail failed";
        break;
    default:
        alertTitle = @"Failure";
        alertMsg = @"Mail could not be sent";
        break;
}

UIAlertView *alert = [[UIAlertView alloc] 
                      initWithTitle:alertTitle
                      message:alertMsg
                      delegate:nil
                      cancelButtonTitle:@"OK"
                      otherButtonTitles:nil];
[alert show];

[self dismissModalViewControllerAnimated:YES];
}
4

1 に答える 1

1

ユーザーがメールを下書きに保存することを選択した場合、メールは「メール」アプリケーションの「下書き」ディレクトリにあります。ユーザーがメールの送信を選択した場合、メールは「メール」アプリケーションの「送信ボックス」ディレクトリにあります。したがって、私の提案は、「メール」アプリケーションがメールの送信と編集を担当しているという事実をユーザーに知らせることです。

于 2012-10-27T12:16:17.870 に答える