2012-01-30 14 views
8

Próbuję dostać e-maile, które wybrałem, aby wysłać wiadomość e-mail. Ale nie wiem, jak ustawićToRecipients, którzy użytkownicy, którzy heve wybrany w widoku MFMailComposeViewController.Jak ustawićToRecipients with 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]; 
    } 

Delegat http://pastie.org/3281814

Odpowiedz

27

Kilka rzeczy są tutaj źle.

1)

setToRecipients sposób MFMailComposeViewController spodziewa niezmienne tablicę z odbiorców już ustawiona.

2)

A ty ustawienie go na pusty zmienny tablicy.

spróbować czegoś takiego:

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

i powinieneś zobaczyć to działa.

+0

To robi praca .... "[email protected] & 1 więcej \ U2026", tylko można dostać jedną wiadomość, ponieważ po włożył & n ... użytkownicy jestem spróbuję zmienić rozmiar pola uitextfield – user1177647

+0

@ Michael Dautermann Nie ma możliwości wysłania e-maili podczas testowania aplikacji w Xcode za pomocą symulatora IOS, ponieważ aplikacja Mail nie ma ustawień w symulatorze IOS. Kiedy podłączam urządzenie Iphone do mojego komputera Mac i uruchamiam aplikację z Xcode na tym urządzeniu, czy jest sposób na wyświetlenie ekranu mojego iPhone'a na Macu, aby móc sterować aplikacją działającą na fizycznym urządzeniu Mysz i wysyłać e-maile z ekranu wyświetlanego na Macu, zamiast dotykać ekranu samego iPhone'a? Wielkie dzięki – bibscy

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. 
Powiązane problemy