2012-01-30 20 views
8

Estoy tratando de recibir los correos electrónicos que selecciono para enviar un correo electrónico. Pero no sé cómo configurar los usuarios que he seleccionado en la vista MFMailComposeViewController.Cómo establecer a los destinatarios con MFMailComposeViewController

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]; 
    } 

Delegado http://pastie.org/3281814

Respuesta

27

un par de cosas están mal aquí.

1)

método de MFMailComposeViewController setToRecipients espera una matriz inmutable con los receptores ya establecido.

2)

Y se está configurando a una matriz mutable en blanco.

intentar algo como esto:

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

Y hay que ver que funcione.

+0

Es no funciona .... "[email protected] y 1 más \ U2026", sólo puede tener un correo electrónico porque después se puso & N usuarios ... Estoy va a tratar de cambiar el tamaño del uitextfield – user1177647

+0

@Michael Dautermann No hay forma de enviar correos electrónicos cuando se prueba la aplicación en Xcode con un simulador IOS ya que la aplicación de correo no se encuentra en Configuración en el simulador IOS. Cuando conecto un dispositivo Iphone a mi Mac y ejecuto la aplicación desde Xcode en este dispositivo, ¿hay alguna manera de mostrar la pantalla de mi Iphone en la Mac para que pueda controlar la aplicación que se está ejecutando en el dispositivo físico con el mouse y enviar los correos electrónicos desde la pantalla que se muestra en mac en lugar de tocar la pantalla en el dispositivo Iphone mismo? Muchas gracias – bibscy

4
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init]; 
    NSArray *toRecipients = [NSArray arrayWithObjects:@"[email protected]",@"[email protected]",nil]; 
    [picker setToRecipients:toRecipients]; 
0
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. 
Cuestiones relacionadas