2012-01-30 88 views
8

我試圖獲取我選擇發送電子郵件的電子郵件。 但我不知道如何setToRecipients哪些用戶,我heve選擇在MFMailComposeViewController視圖。如何使用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]; 
    } 

代表 http://pastie.org/3281814

回答

27

有兩件事情是錯在這裏。

1)

MFMailComposeViewController的setToRecipients方法需要與受者的不可變陣列已經設置。

2)

而你將它設置爲空白可變數組。

嘗試這樣:

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

,你應該看到它的工作。

+0

它不工作.... 「[email protected]&1個\ U2026」, 只能得到一個電子郵件,因爲之後他把&n個用戶... 我試圖調整uitextfield的大小 – user1177647 2012-01-30 13:26:54

+0

@Michael Dautermann由於IOS模擬器中的設置缺少郵件應用程序,因此在使用IOS模擬器測試Xcode中的應用程序時無法發送電子郵件。當我將Iphone設備連接到我的Mac,然後從此設備上的Xcode運行應用程序時,是否有方法在Mac上顯示我的Iphone的屏幕,以便我可以控制在物理設備上運行的應用程序鼠標並從Mac上顯示的屏幕發送電子郵件,而不是觸摸Iphone設備本身的屏幕?非常感謝 – bibscy 2017-01-07 13:06:54

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. 
相關問題