Reputation: 83
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
Upvotes: 8
Views: 12647
Reputation: 1
MFMailComposer In “ Swift “ and “ Objective c “
*********************************************
In objective c
Steps:
1. Create new project.
2. Add a button into storyboard.
3. In .h add header file like “Import <MessageUI/MessageUI.h>”
4. Add delegate to ViewController “ MFMailComposeViewControllerDelegate”
5. In Button Action {
NSString *emailTitle = “”
NSString *messageBody = “”
NSArray *toRecipents = “”
MFMailComposeViewController *VC = [[MFMailComposeViewController]alloc init];
VC.mailComposeDelegate = self;
[VC.setSubject: emailTitle];
[VC.setMessageBody: messageBody];
[VC.setToRecepents: toRecipents];
if([MFMailComposeViewController canSendMail]) {
[self presentViewController:mc animated:YES completion:NULL];
}
6.MailComposeController Function
- (void) mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
switch (result)
{
case MFMailComposeResultCancelled:
NSLog(@"Mail cancelled");
break;
case MFMailComposeResultSaved:
NSLog(@"Mail saved");
break;
case MFMailComposeResultSent:
NSLog(@"Mail sent");
break;
case MFMailComposeResultFailed:
NSLog(@"Mail sent failure: %@", [error localizedDescription]);
break;
default:
break;
}
[self dismissViewControllerAnimated:YES completion:NULL];
}
7. And also add FrameWork: MessageUI.FrameWork
8. Run the App into mobile or Simulator.
In Swift:
*******
Steps:
1. Create New Project
2. Add a button Storyboard
3. In ViewController.Swift Class File Import MessageUI
4. In Button Action ConfiguredMailComposer below Steps
{
let mailComposeViewController = configuredMailComposeViewController()
if MFMailComposeViewController.canSendMail()
{
self.present(mailComposeViewController, animated: true, completion: nil)
self.showSendmailSuccesfulAlert()
} else {
self.showSendMailErrorAlert()
}
5. Implement the configure mail composer
func configuredMailComposeViewController() -> MFMailComposeViewController {
let mailComposerVC = MFMailComposeViewController()
mailComposerVC.mailComposeDelegate = self
mailComposerVC.setToRecipients(["[email protected]"])
mailComposerVC.setSubject("Sending you an in-app e-mail...")
mailComposerVC.setMessageBody("Sending e-mail in-app is not so bad!", isHTML: false)
return mailComposerVC
}
6. MailComposer optional method
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) {
controller.dismiss(animated: true, completion: nil)
}
7. After completed the step no: run the app into device or simulator.
Upvotes: 0
Reputation: 5540
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
NSArray *toRecipients = [NSArray arrayWithObjects:@"[email protected]",@"[email protected]",nil];
[picker setToRecipients:toRecipients];
Upvotes: 5
Reputation: 89529
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.
Upvotes: 29