Guía iOS: Uso del correo
Actualizado : 21 octubre 2011 (iOS 5)
Siguiendo con la guía de desarrollo para iPhone e iPad en esta ocasión revisaremos un tema de gran utilidad para compartir información: el uso del correo, a partir de la versión 3.0 del iOS esta disponible la clase MFMailComposeViewController para enviar correos desde el iPhone.
Las versiones anteriores utilizan la aplicación Mail que trae por defecto el dispositivo. En esta guía veremos como implementar la clase MFMailComposeViewController.
Explorando MFMailComposeViewController
Esta clase brinda una interface que permite administrar, editar y enviar emails. Cuenta con un formulario predefinido con los campos: subject, email recipients, body text y attachments, es decir, un formulario normal de correo.
Uno de los inconvenientes con esta clase es que no permite verificar si efectivamente el email enviado llegó a su destino. La clase se encarga de colocar los mensajes enviados en el buzón de salida de la aplicación Mail, resultando útil para el envió de emails cuando no se cuenta con conexión a la red, pero inapropiado para confirmar el envío.
Para más información sobre esta clase puedes consultar aquí.
Sent from my iOS Simulator
1. Crear un nuevo proyecto en Xcode de tipo “Single View Application”
2. Agregar el framework MessageUI
3. En “ViewController.h” agregar los elementos
#import <UIKit/UIKit.h> #import <MessageUI/MessageUI.h> #import <MessageUI/MFMailComposeViewController.h> @interface ViewController : UIViewController // Delegate de la clase MFMailComposeViewController <MFMailComposeViewControllerDelegate> { IBOutlet UILabel *respuesta; } @property (nonatomic, retain) IBOutlet UILabel *respuesta; // Verifica si esta disponible la clase MFMailComposeViewController -(IBAction)verEditMail:(id)sender; // Configura vista para editar y enviar un email -(void)configurarMail; // Ejecuta la App Mail del dispositivo -(void)ejecutarMailApp; @end
4. Abrir el archivo “ViewController.xib” en Interface Builder, agregar los elementos : UIButton, UILabel y relacionarlos con la App
5. Definir las siguientes funciones de “ViewController.m” en Xcode
@synthesize respuesta; - (IBAction)verEditMail:(id)sender { Class mailClass = (NSClassFromString(@"MFMailComposeViewController")); if (mailClass != nil) { // Verifica que este habilitada la opcion para enviar correos en el dispositivo if ([mailClass canSendMail]) [self configurarMail]; else [self ejecutarMailApp]; } else [self ejecutarMailApp]; } // Configura vista para editar y enviar un email - (void)configurarMail { MFMailComposeViewController *mailView = [[MFMailComposeViewController alloc] init]; mailView.mailComposeDelegate = self; [mailView setSubject:@"Mejorando la Web!"]; // Destinatarios NSArray *toRecipients = [NSArray arrayWithObject:@"[email protected]"]; NSArray *ccRecipients = [NSArray arrayWithObjects:@"[email protected]", nil]; [mailView setToRecipients:toRecipients]; [mailView setCcRecipients:ccRecipients]; // Mensaje NSString *emailBody = @"Un saludo a tod@s!"; [mailView setMessageBody:emailBody isHTML:NO]; [self presentModalViewController:mailView animated:YES]; [mailView release]; } - (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error { respuesta.hidden = NO; // Notifica al usuario los resultados del envio switch (result) { case MFMailComposeResultCancelled: respuesta.text = @"Mensaje: cancelado"; break; case MFMailComposeResultSaved: respuesta.text = @"Mensaje: guardado"; break; case MFMailComposeResultSent: respuesta.text = @"Mensaje: enviado"; break; case MFMailComposeResultFailed: respuesta.text = @"Mensaje: falló"; break; default: respuesta.text = @"Mensaje: no enviado"; break; } [self dismissModalViewControllerAnimated:YES]; } // Ejecuta la App Mail del dispositivo -(void)ejecutarMailApp { NSString *recipients = @"mailto:[email protected][email protected]&subject=Mejorando la Web!"; NSString *body = @"&body=Un saludo a tod@s!"; NSString *email = [NSString stringWithFormat:@"%@%@", recipients, body]; email = [email stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:email]]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } - (void)dealloc { [respuesta release]; [super dealloc]; }
6. Compilar y ejecutar
Si ha salido todo bien cvander tendrá que hacer un nuevo filtro en su inbox Cualquier inquietud sobre este tema o la guía en general no dudes en comentar.
Repositorio en GitHub : MDW-GuiaiOS03-MFMailComposeViewController
[…] Guía iPhone e iPad: Uso del correo […]
[…] y hacer el llamado a la aplicación Mail para las versiones anteriores al iPhone OS 3.0. Descargar este archivo Reportar recurso Procesando el […]
Interesante, pero yo preferiria tutoriales de Objective-C, a muchos talvez le pasaba a como a mi, que te preguntas…y que es todo esto?!!!, pues los metodos son diferentes a otros lenguajes, etc, y entonces…. las personas se pierden.
Coincido contigo, aunque los tutoriales aquí explicados son buenos, preferiría de Objetive C
Gracias por sus comentarios @Asinox y @Rodrigo, si desean conocer un poco mas sobre el lenguaje pueden revisar la documentacion oficial de Apple aqui :
http://bit.ly/aJMqrv
Igual cualquier duda que tengan al respecto, los comentarios estan abiertos 😀
Hola!
¿Ya no habrá más tutoriales?