Xcode 4 / iOS: envía 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 todos sin suerte. No puedo hacer que compilen en Xcode, así que supuse que estaban desactualizados. ¿Hay alguna forma 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 instalaciones de correo electrónico incorporadas en iOS es que le da acceso a la libreta de direcciones. Entonces, completa automáticamente los nombres y las direcciones de correo electrónico. Yaaiiii!

    Incluya frameworks de AddressBook , MessageUI AddressBook , MessageUI AddressBookUI y MessageUI y codifique algo como esto. ¡Tenga en count que incluso puede elegir enviar contenido como HTML también!

     #import <MessageUI/MessageUI.h> #import <AddressBook/AddressBook.h> #import <AddressBookUI/AddressBookUI.h> 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 esto, tengo que escribir este selector para descartar la window 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 comtesting esto antes de presentar un MFMailComposeViewController en un dispositivo que no tiene una count de correo electrónico, obtendrá un SIGABRT.

    Es fácil perdérselo cuando testing en el dispositivo o el simulador ya que probablemente tenga una count de correo electrónico en su Mac y su iPad.

    SKPSMTPMessage todavía funciona bien para enviar correos electrónicos sin la necesidad de una interfaz de usuario.

    Asegúrese de agregar una reference a CFNetwork.framework en su proyecto. De lo contrario, obtendrá errores de compilation.

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

    Incluso puedo decirle por qué esto es: Imagine una aplicación que pueda enviarse a todos en su libreta de direcciones sin su confirmación, diciéndoles que acaba de instalar la aplicación X, y deberían hacerlo. Incluso si está bien intencionado, esto podría crear rápidamente una gran tormenta de SMTP, y en esencia, este sería el virus "Te amo".

    Eso era suficiente de una tensión en el internet público, pero en los operadores inalámbricos, podría causar rápidamente una sobrecarga suficiente para bloquear el service celular.

    Conclusión: utilice el ComposeViewController como sugiere @Srikar, o bien POST los datos a su server y envíelo desde allí.