Xcode 4 / iOS: envíe un correo electrónico usando SMTP desde dentro de mi aplicación

He estado buscando un marco para simplemente permitirme enviar un correo electrónico desde mi aplicación. He intentado MailCore, Pantomime y SKPSMTP todo sin suerte. No puedo hacer que compilen en Xcode, así que supuse que estaban desactualizados. ¿Hay alguna manera de que pueda hacer esto? ¿Si es así, cómo? Gracias.

Puede enviar fácilmente correos electrónicos desde su dispositivo iOS. No es necesario implementar SMTP y todo. Lo mejor de usar las funciones de correo electrónico incorporado en iOS es que le da acceso a la libreta de direcciones. Por lo tanto, completa automáticamente los nombres, las direcciones de correo electrónico. Yaaiiii !!

Incluye, AddressBook , AddressBookUI y frameworks MessageUI y codifica algo como esto. Tenga en cuenta que incluso puede elegir enviar contenido como HTML también.

 #import  #import  #import  MFMailComposeViewController *mailComposer; mailComposer = [[MFMailComposeViewController alloc] init]; mailComposer.mailComposeDelegate = self; [mailComposer setModalPresentationStyle:UIModalPresentationFormSheet]; [mailComposer setSubject:@"your custom subject"]; [mailComposer setMessageBody:@"your custom body content" isHTML:NO]; [self presentModalViewController:mailComposer animated:YES]; [mailComposer release]; 

Para completar, debo escribir este selector para cerrar la ventana de correo electrónico si el usuario presiona cancel o send

 - (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error { if(error) NSLog(@"ERROR - mailComposeController: %@", [error localizedDescription]); [self dismissModalViewControllerAnimated:YES]; return; } 

Feliz encoding …

Cabe señalar que MFMailComposeViewController tiene un método llamado canSendMail . Si no verifica esto antes de presentar un MFMailComposeViewController en un dispositivo que no tiene una cuenta de correo electrónico, obtendrá un SIGABRT.

Es fácil pasar esto por alto al probar en el dispositivo o el simulador, ya que probablemente tenga una cuenta de correo electrónico en su Mac y su iPad.

SKPSMTPMessage funciona bien para enviar correos electrónicos sin necesidad de una IU.

Asegúrese de agregar una referencia a CFNetwork.framework en su proyecto. De lo contrario, obtendrás errores de comstackción.

Me imagino que la forma de hacerlo de Apple sería enviar los datos a un servidor a través de HTTP Post y hacer que el servidor genere el correo por usted. He visto a otros haciendo preguntas similares a esto, y la respuesta es que si lo envía desde el dispositivo, realmente necesita avisarle al usuario.

Incluso puedo decirte por qué es esto: imagina una aplicación que podría enviarse a todos en tu libreta de direcciones sin tu confirmación, diciéndoles que acabas de instalar la aplicación X, y ellos también deberían hacerlo. Incluso si tiene buenas intenciones, esto podría crear rápidamente una gran tormenta SMTP, y en esencia, este sería el virus “Te amo”.

Eso fue una tensión suficiente en la Internet pública, pero en los operadores inalámbricos, podría causar rápidamente una sobrecarga suficiente para bloquear el servicio de cel.

Conclusión: use el ComposeViewController como lo sugiere @Srikar, o bien, PUBLIQUE los datos a su servidor y envíelos desde allí.