2010-08-19 3 views
20

저는 ios 응용 프로그램 개발을 처음 사용합니다. 전자 메일을 보내는 데 사용한 코드는 다음과 같습니다.시뮬레이터에서 MFMailComposeViewController를 사용하여 전자 메일을 보낼 수 없습니다.

MFMailComposeViewController* controller = [[MFMailComposeViewController alloc] init]; 
    controller.mailComposeDelegate = self; 
    [controller setSubject:@"My Subject"]; 
    [controller setMessageBody:@"Hello there." isHTML:NO]; 
    [self presentModalViewController:controller animated:YES]; 
    [controller release]; 



    - (void)mailComposeController:(MFMailComposeViewController*)controller 
        didFinishWithResult:(MFMailComposeResult)result 
           error:(NSError*)error { 

      if (result == MFMailComposeResultSent) { 

       NSLog(@"It's away!"); 
      } 

      [self dismissModalViewControllerAnimated:YES]; 
    } 

불행히도 위임 방법은 실행되지 않습니다. 시뮬레이터를 통해 내 이메일을 어떻게 확인할 수 있습니까?

+0

내가 내 장치에 시도 할 때 나는 같은 problem..but에 직면했다 다운로드를 위해 그것은 설명은 lukya 좋은 .. 감사했다. –

+0

내 작업을 위해서 나는 단지 작곡가를 보여줄 필요가있다. 그러나 나는 그렇게 할 수 없다. MFMailComposeViewController * composeVC = [[MFMailComposeViewController alloc] init]; . 이 줄은 경고 컨트롤러를 팝업합니다. –

답변

51

시뮬레이터를 통해 메일을 보내십시오.

대신 응용 프로그램을 장치에 설치하고 거기에서 시도 할 수 있습니다.

시뮬레이터는 단지 작곡가를 표시하지만 메일을 보낼 수는 없습니다. Sent Successfully은 코드가 훌륭하다는 것을 인정하는 것이며 전송하는 동안 코드를 종료하는 데 아무런 문제가 없습니다.

+1

이것은 정답입니다. 보내진 메일 애니메이션에 속지 마십시오. 실제 보내지 않은 이메일입니다. –

+0

내 작업을 위해서 나는 단지 작곡가를 보여줄 필요가있다. 그러나 나는 그렇게 할 수 없다. MFMailComposeViewController * composeVC = [[MFMailComposeViewController alloc] init]; . 이 행은 경고 컨트롤러를 표시합니다. –

7

내가 아는 한, 시뮬레이터에서 메일을 보낼 수 없다. MFMailComposeViewController는 iPhone의 Mail 앱에서 구성된 메일 박스를 사용하여 메일을 보낸다. 시뮬레이터에는 메일 앱이 없습니다.

+0

제 작업을 위해 작곡가를 표시하면됩니다. 그러나 나는 그렇게 할 수 없다. MFMailComposeViewController * composeVC = [[MFMailComposeViewController alloc] init]; . 이 줄은 경보 컨트롤러를 팝업합니다. –

3

Gmail 연결을 사용하여 메일을 보낼 수 있습니다. 사용자에게 메일을 보낼 수 있기 때문에 메일을 보내는 데 사용하는 코드에 따라 코드를 삽입하고 코드를 설정해야합니다.

- (IBAction)sendMessageInBack:(id)anObject{ 

    NSLog(@"Start Sending"); 

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 

    NSString *documentsDirectory = [paths objectAtIndex:0]; 

    NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"sample.pdf"]; 



    NSData *dataObj = [NSData dataWithContentsOfFile:writableDBPath]; 

    SKPSMTPMessage *testMsg = [[SKPSMTPMessage alloc] init]; 

    testMsg.fromEmail = @"Your mail id"; 

    testMsg.toEmail = @"sender mail ids"; 

    testMsg.relayHost = @"smtp.gmail.com"; 

    testMsg.requiresAuth = YES; 

    testMsg.login = @"Uour mail id"; 

    testMsg.pass = @"your pass"; 

    testMsg.subject = @"Test application "; 

    testMsg.wantsSecure = YES; // smtp.gmail.com doesn't work without TLS! 

    // Only do this for self-signed certs! 

    // testMsg.validateSSLChain = NO; 

    testMsg.delegate = self; 

    NSDictionary *plainPart = [NSDictionary dictionaryWithObjectsAndKeys:@"text/plain",kSKPSMTPPartContentTypeKey, 

           @"Some text to include in body",kSKPSMTPPartMessageKey,@"8bit",kSKPSMTPPartContentTransferEncodingKey,nil]; 




     testMsg.parts = [NSArray arrayWithObjects:plainPart,nil]; 

    [testMsg send]; 



} 


-(void)messageSent:(SKPSMTPMessage *)message{ 
    [message release]; 
    NSLog(@"delegate - message sent"); 
} 



-(void)messageFailed:(SKPSMTPMessage *)message error:(NSError *)error{ 
    [message release]; 
    // open an alert with just an OK button 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Unable to send email" delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
    [alert show]; 
    [alert release]; 
    NSLog(@"delegate - error(%d): %@", [error code], [error localizedDescription]); 
} 

다음 파일은 프로젝트에 복사됩니다.

enter image description here

샘플 code here.

+0

이 API는 첨부 파일없이 정상적으로 작동합니다. 두 개 이상의 파일을 첨부하면 충돌이 발생합니다. MFMailComposeViewController SKPSMTPMessage보다 나은 것 같아요. –

관련 문제