title: Mail composer gives an error in Xcode
body: <p>I'm trying to senda a mail with a iOS app.</p>
  
  <p>This is the method:</p>
  
  <pre><code>    MFMailComposeViewController  *picker = [[MFMailComposeViewController  alloc] init];
      picker.mailComposeDelegate = self;
  
      [picker setSubject:@"Reclutamento pompieri"];
  
      // Set up the recipients.
      NSArray *toRecipients = [NSArray arrayWithObjects:@"test@gmail.com",nil];
  
      [picker setToRecipients:toRecipients];
  
  
      testoMail = [NSMutableString stringWithFormat: @"This is a test"];
  
      [picker setMessageBody:testoMail isHTML:YES]; //HTML!!!!!!
  
          [self presentViewController:picker animated:YES completion:nil];
  
  //*******************************************************************************************
  
       // The mail compose view controller delegate method
              - (void)mailComposeController:(MFMailComposeViewController *)controller //**ERROR STAYS HERE**
              didFinishWithResult:(MFMailComposeResult)result
              error:(NSError *)error
              {
                  [self dismissModalViewControllerAnimated:YES]
  
  ;
  </code></pre>
  
  <p>But the debugger says "<em>Used undeclared identifier "mailComposerController</em>"</p>
  
  <p>I dont't understand what it means.
  Can you help me?</p>
  
  <p>Tank you very much</p>
  
  <p>PS. The header is:</p>
  
  <pre><code>#import &lt;UIKit/UIKit.h&gt;
  #import &lt;MessageUI/MessageUI.h&gt;
  
  @interface Reclutamento : UIViewController &lt;MFMailComposeViewControllerDelegate&gt;
  {
  
  }
  
  - (void)sendMail;
  
  @end
  </code></pre>
  
  <p>the full .h code is</p>
  
  <pre><code>//
  //  Reclutamento.h
  //  Pompieri
  //
  //  Created by Reda Bousbah on 15.01.13.
  //  Copyright (c) 2013 Reda Bousbah. All rights reserved.
  //
  
  #import &lt;UIKit/UIKit.h&gt;
  #import &lt;MessageUI/MessageUI.h&gt;
  #import &lt;MessageUI/MFMailComposeViewController.h&gt;
  
  @interface Reclutamento : UIViewController &lt;MFMailComposeViewControllerDelegate&gt;
  {
      UITextField *nameTextField;
      UITextField *surnameTextField;
      UITextField *bornDateTextField;
      UITextField *addressTextField;
      UITextField *zipTextField;
      UITextField *emailTextField;
  
      MFMailComposeViewController *email;
  }
  
  @property (nonatomic, retain) MFMailComposeViewController *email;
  
  @property(nonatomic,retain) IBOutlet UITextField *nameTextField;
  @property(nonatomic,retain) IBOutlet UITextField *surnameTextField;
  @property(nonatomic,retain) IBOutlet UITextField *bornDateTextField;
  @property(nonatomic,retain) IBOutlet UITextField *addressTextField;
  @property(nonatomic,retain) IBOutlet UITextField *zipTextField;
  @property(nonatomic,retain) IBOutlet UITextField *emailTextField;
  
  @property NSString *name;
  @property NSString *surname;
  @property NSString *bornDate;
  @property NSString *address;
  @property NSString *zipCode;
  @property NSString *miaEmail;
  
  
  - (IBAction)checkData:(id)sender;
  - (IBAction)backgroundTap:(id)sender;
  - (IBAction)doneButtonPressed:(id)sender;
  
  - (void)sendMail;
  
  @end
  </code></pre>
  
  <p>and the implementation file is</p>
  
  <pre><code>//
  //  Reclutamento.m
  //  Pompieri
  //
  //  Created by Reda Bousbah on 15.01.13.
  //  Copyright (c) 2013 Reda Bousbah. All rights reserved.
  //
  
  #import "Reclutamento.h"
  #import &lt;MessageUI/MessageUI.h&gt;
  #import &lt;MessageUI/MFMailComposeViewController.h&gt;
  
  @interface Reclutamento ()
  
  @end
  
  
  @implementation Reclutamento
  
  @synthesize nameTextField, surnameTextField, bornDateTextField, addressTextField, zipTextField, emailTextField;
  @synthesize name, surname, bornDate, address, zipCode, miaEmail;
  
  - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
  {
      self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
      if (self) {
          // Custom initialization
      }
      return self;
  }
  
  - (void)viewDidLoad
  {
      [super viewDidLoad];
      // Do any additional setup after loading the view.
  
      nameTextField.text = nil;
      surnameTextField.text = nil;
      bornDateTextField.text = nil;
      addressTextField.text = nil;
      zipTextField.text = nil;
      emailTextField.text = nil;
  }
  
  - (void)didReceiveMemoryWarning
  {
      [super didReceiveMemoryWarning];
      // Dispose of any resources that can be recreated.
  }
  
  - (NSUInteger)supportedInterfaceOrientations {
      return UIInterfaceOrientationMaskLandscape;
  }
  
  #pragma - getting info from the UI
  
  //NSString *test = nil;
  
  
  - (IBAction)checkData:(id)sender
  {
      /*
      name = nameTextField.text;
      surname = surnameTextField.text;
      bornDate = bornDateTextField.text;
      address = addressTextField.text;
      zipCode = zipTextField.text;
      email = emailTextField.text;
      */
  
      //NSLog(@" Nome: %@ \n Cognome: %@ \n Data di nascita: %@ \n Indirizzo: %@ \n Zip: %@ \n email: %@ \n", name, surname, bornDate, address, zipCode, email);
  
      unsigned int x,a = 0;
      NSMutableString *messaggioErrore; //stringa variabile
      messaggioErrore = [NSMutableString stringWithFormat: @""]; //le stringhe mutabili vanno inizializzate in questo modo!
  
  
      for (x=0; x&lt;6; x++)
      {
          switch (x) {
              case 0:
                  if (nameTextField.text == nil) {
                      [messaggioErrore appendString:@"Nome, "];
                      a=1;
  
                  }
                  break;
  
              case 1:
                  if (surnameTextField.text == nil)
                  {
                      [messaggioErrore appendString:@"Cognome, "];
                      a=1;
                  }
                  break;
  
              case 2:
                  if (bornDateTextField.text == nil)
                  {
                      [messaggioErrore appendString:@"Data di nascita, "];
                      a=1;
                  }
                  break;
  
              case 3:
                  if (addressTextField.text == nil)
                  {
                      [messaggioErrore appendString:@"Indirizzo, "];
                      a=1;
                  }
                  break;
  
              case 4:
                  if (zipTextField.text == nil)
                  {
                      [messaggioErrore appendString:@"Zip Code, "];
                      a=1;
                  }
                  break;
  
              case 5:
                  if (emailTextField.text == nil)
                  {
                      [messaggioErrore appendString:@"Email, "];
                      a=1;
                  }
                  break;
  
              default:
                  break;
          }
  
      }
  
      NSLog (@"Messaggio errore: %@", messaggioErrore);
  
       if (a == 1) {
  
           NSMutableString  *popupErrore;
           popupErrore = [NSMutableString stringWithFormat: @"Per inviare compilare i seguenti campi:  "];
  
           [popupErrore appendString:messaggioErrore]; //aggiungo i miei errori
           [popupErrore appendString: @" grazie della comprensione."]; //
  
           NSLog(@"%@", popupErrore);
  
          UIAlertView *chiamataEffettuata = [[UIAlertView alloc]
                                             initWithTitle:@"ATTENZIONE" //titolo del mio foglio
                                             message:popupErrore
                                             delegate:self
                                             cancelButtonTitle:@"Ok, correggo" //bottone con cui si chiude il messaggio
                                             otherButtonTitles:nil, nil];
          [chiamataEffettuata show]; //istanza per mostrare effettivamente il messaggio
       }
  
      else
      {
          name = nameTextField.text;
          surname = surnameTextField.text;
          bornDate = bornDateTextField.text;
          address = addressTextField.text;
          zipCode = zipTextField.text;
          email = emailTextField.text;
  
          NSMutableString *datiUtente;
          datiUtente = [NSMutableString stringWithFormat: @"&lt;br&gt;&lt;br&gt; &lt;b&gt;Nome:&lt;/b&gt; %@ &lt;br&gt; &lt;b&gt;Cognome:&lt;/b&gt; %@ &lt;br&gt; &lt;b&gt;Data di nascita:&lt;/b&gt; %@ &lt;br&gt; &lt;b&gt;Indirizzo:&lt;/b&gt; %@ &lt;br&gt; &lt;b&gt;Zip:&lt;/b&gt; %@ &lt;br&gt; &lt;b&gt;Email:&lt;/b&gt; %@ &lt;br&gt;", name, surname, bornDate, address, zipCode, miaEmail];
  
          NSLog(@"Dati utente: %@", datiUtente);
  
          NSMutableString *testoMail;
          testoMail = [NSMutableString stringWithFormat: @"Salve, questa mail è stata generata automaticamente dalla applicazione per iPhone ''&lt;b&gt;Pompieri Locarno&lt;/b&gt;'' &lt;br&gt; i dati relativi all'utente sono: %@", datiUtente];
  
          NSLog(@"%@", testoMail);
  
  
          //MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
          MFMailComposeViewController  *picker = [[MFMailComposeViewController  alloc] init];
          picker.mailComposeDelegate = self;
  
          [picker setSubject:@"Reclutamento pompieri"];
  
          // Set up the recipients.
          NSArray *toRecipients = [NSArray arrayWithObjects:@"youporn@gmail.com",nil];
  
          //NSArray *ccRecipients = [NSArray arrayWithObjects:@"second@example.com",@"third@example.com", nil];
          //NSArray *bccRecipients = [NSArray arrayWithObjects:@"four@example.com",nil];
  
          [picker setToRecipients:toRecipients];
          //[picker setCcRecipients:ccRecipients];
          //[picker setBccRecipients:bccRecipients];
  
          // Attach an image to the email.
          //NSString *path = [[NSBundle mainBundle] pathForResource:@"ipodnano" ofType:@"png"];
          //NSData *myData = [NSData dataWithContentsOfFile:path];
          //[picker addAttachmentData:myData mimeType:@"image/png" fileName:@"ipodnano"];
  
          // Fill out the email body text.
          //NSMutableString *emailBody;
          testoMail = [NSMutableString stringWithFormat: @"%@", testoMail];
  
          [picker setMessageBody:testoMail isHTML:YES]; //HTML!!!!!!
  
          // Present the mail composition interface.
          [self presentViewController:picker animated:YES completion:nil];
  
          // The mail compose view controller delegate method
          - (void)mailComposeController:(MFMailComposeViewController *)controller
          didFinishWithResult:(MFMailComposeResult)result
          error:(NSError *)error
          {
              [self dismissModalViewControllerAnimated:YES];
          }
      }
  }
  
  #pragma mark - Mandare email
  /*
  - (void)sendMail:(NSMutableString*)testoMail{
  
      MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
      picker.mailComposeDelegate = self;
  
      [picker setSubject:@"Reclutamento pompieri"];
  
      // Set up the recipients.
      NSArray *toRecipients = [NSArray arrayWithObjects:@"reda.bousbah@gmail.com",nil];
      //NSArray *ccRecipients = [NSArray arrayWithObjects:@"second@example.com",@"third@example.com", nil];
      //NSArray *bccRecipients = [NSArray arrayWithObjects:@"four@example.com",nil];
  
      [picker setToRecipients:toRecipients];
      //[picker setCcRecipients:ccRecipients];
      //[picker setBccRecipients:bccRecipients];
  
      // Attach an image to the email.
      //NSString *path = [[NSBundle mainBundle] pathForResource:@"ipodnano" ofType:@"png"];
      //NSData *myData = [NSData dataWithContentsOfFile:path];
      //[picker addAttachmentData:myData mimeType:@"image/png" fileName:@"ipodnano"];
  
      // Fill out the email body text.
      NSString *emailBody = @"It is raining in sunny California!";
      [picker setMessageBody:emailBody isHTML:NO];
  
      // Present the mail composition interface.
      [self presentViewController:picker animated:YES completion:nil];
  
  
  }
  */
  
  #pragma mark - methods to control the keyboard
  
  - (IBAction)backgroundTap:(id)sender //method for resign the keyboard when the background is tapped
  {
      [nameTextField resignFirstResponder];
      [surnameTextField resignFirstResponder];
      [bornDateTextField resignFirstResponder];
      [addressTextField resignFirstResponder];
      [zipTextField resignFirstResponder];
      [emailTextField resignFirstResponder];
  
  }
  
  - (IBAction)doneButtonPressed:(id)sender
  {
      NSLog( @"done button pressed");
      [sender resignFirstResponder];
  }
  
  @end
  </code></pre>