2014-03-29 6 views
3

이메일을 보내는 것을 테스트하는 매우 간단한 앱이 있지만 이메일이 도착하지 않습니다. MessageUI 프레임 워크를 앱에 포함 시켰고 MFMailComposeViewControllerDelegate도 구현했습니다. 다음과 같이 응용 프로그램의 두 가지 방법은 다음과 같습니다MFMailComposeViewController를 사용하여 iOS 7에서 이메일을 보내는 데 문제가 발생했습니다.

- (IBAction)showEmail:(id)sender 
{ 
    // Email Subject 
    NSString *emailTitle = @"Test Email"; 
    // Email Content 
    NSString *messageBody = @"iOS programming is so fun!"; 
    // To address 
    NSArray *toRecipents = [NSArray arrayWithObject:@"[email protected]"]; 

    MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init]; 
    mc.mailComposeDelegate = self; 
    [mc setSubject:emailTitle]; 
    [mc setMessageBody:messageBody isHTML:NO]; 
    [mc setToRecipients:toRecipents]; 

    // Present mail view controller on screen 
    [self presentViewController:mc animated:YES completion:NULL]; 

}

및 대리자 방법 : 내 응용 프로그램에서 이메일 버튼을 누르면

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

    // Close the Mail Interface 
    [self dismissViewControllerAnimated:YES completion:NULL]; 
} 

는 첫 번째 방법은 완벽하게 작동 때 표시되는 보내기 단추를 클릭하면 로그에 "Mail Sent"메시지가 나타납니다. 이메일은 결코 도착하지 않습니다.

모든 것이 광고 된대로 작동하는 것처럼 보입니다. 단, 도착지에 도착하지 않은 이메일은 예외입니다.

시뮬레이터가 아닌 iPad에서 실행 중이며 네트워크 연결 상태가 좋습니다.

무엇이 누락 되었습니까?

답변

1

분명히 이것은 iPad 자체의 이메일 구성 문제였습니다. 장치를 재부팅 한 후 위 코드가 완벽하게 작동합니다. 나는 이런 종류의 문제를 절대 싫어한다.

0

canSendMail 방법을 사용하십시오. 다음 코드를 사용하여 장치 메일 구성이 설정되어 있는지 확인하십시오. 그렇지 않으면 앱이 중단됩니다.

if ([MFMailComposeViewController canSendMail]) 
{ 
    // Create and show the MailComposeViewController 
} 
else 
{ 
    // Show No mail account set up on device. 
}