2010-08-19 10 views
20

Soy nuevo en el desarrollo de aplicaciones ios, a continuación se muestra el código que utilicé para enviar un correo electrónico.No se puede enviar correo electrónico usando MFMailComposeViewController en el simulador

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

Desafortunadamente delegan métodos no se activan, ¿Puede alguien por favor sugerir cómo puedo comprobar mi correo electrónico a través del simulador?

+0

que estaba frente a la misma problem..but cuando he intentado en mi dispositivo funcionó bien .. gracias lukya para la explicación. –

+0

Para mi tarea solo necesito mostrar el compositor. Pero no puedo hacerlo. MFMailComposeViewController * composeVC = [[MFMailComposeViewController alloc] init]; . Esta línea muestra el controlador de alerta –

Respuesta

51

Usted CAN NOT enviar correos a través de Simulator.

En su lugar, puede instalar la aplicación en el dispositivo e intentar desde allí.

Simulator solo muestra el compositor pero no le permite enviar correos. Enviado con éxito es solo el reconocimiento de que su código está correcto y que no hay ningún problema que lo rescinda durante el envío.

+1

Esta es la respuesta correcta, y no se deje engañar por la animación de correo enviado, el correo electrónico * no * realmente se envía. –

+0

Para mi tarea solo necesito mostrar el compositor. Pero no puedo hacerlo. MFMailComposeViewController * composeVC = [[MFMailComposeViewController alloc] init]; . Esta línea aparece el controlador de alerta. –

7

Por lo que sé, no puede enviar correos electrónicos desde el simulador .. El MFMailComposeViewController utiliza el buzón configurado en la aplicación de correo de iPhone para enviar el correo. El simulador no tiene la aplicación de correo.

+0

Para mi tarea solo necesito mostrar el compositor. Pero no puedo hacerlo. MFMailComposeViewController * composeVC = [[MFMailComposeViewController alloc] init]; . Esta línea muestra el controlador de alerta –

3

Puede enviar correo utilizando la conectividad de Gmail, puede enviar un correo al usuario para el que necesita insertar cierta cantidad de código y configuración en el código siguiente que se utiliza para enviar un correo.

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

Y los siguientes archivos se copian en su proyecto.

enter image description here

Para descargar una muestra code here.

+0

Esta aplicación funciona bien sin archivos adjuntos. Se bloqueará cuando adjunte más de dos archivos. Creo que MFMailComposeViewController es mejor que SKPSMTPMessage –

Cuestiones relacionadas