How to setToRecipients with MFMailComposeViewController

user1177647 picture user1177647 · Jan 30, 2012 · Viewed 12.2k times · Source

I'm trying to get emails that i select to send an email. But i dont know how to setToRecipients which users that i heve selected in the MFMailComposeViewController view.

if ([MFMailComposeViewController canSendMail])
    {
        mailer = [[MFMailComposeViewController alloc] init];

        mailer.mailComposeDelegate = self;
        [mailer setSubject:@"A Message from blablabl"];

        NSMutableArray *usersTo = [[NSMutableArray alloc] init];
        toRecipients = usersTo;
        [mailer setToRecipients:toRecipients];

        NSString *emailBody = @"blablablabal";

        [mailer setMessageBody:emailBody isHTML:YES];

        // only for iPad
        // mailer.modalPresentationStyle = UIModalPresentationPageSheet;

        [self presentModalViewController:mailer animated:YES];
    }
    else
    {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Failure" 
                                                        message:@"Your device doesn't support the composer sheet" 
                                                       delegate:nil 
                                              cancelButtonTitle:@"OK" 
                                              otherButtonTitles: nil];
        [alert show];
    }

Delegate http://pastie.org/3281814

Answer

Michael Dautermann picture Michael Dautermann · Jan 30, 2012

A couple things are wrong here.

1 )

MFMailComposeViewController's setToRecipients method expects an immutable array with recipients already set.

2 )

And you're setting it to a blank mutable array.

Try something like this:

NSArray *usersTo = [NSArray arrayWithObject: @"[email protected]"];
[mailer setToRecipients:usersTo];

And you should see it work.