Enviar email con iOS

Enviar email con iOS – MessageUI

Envía correos electrónicos predefinidos con tu Iphone y MessageUI.

Muchas veces, enviar un correo desde mi Iphone me supone casi un ejercicio de malabarismo, sobre todo cuando tengo que contestar a alguno de los comrpadores de Todo Colección o Ebay. En estos casos, tengo que buscar el texto estandarizado para enviar, ajustar los importes por cada tipo de envío, los datos personales y por último enviar.

Por esta razón malabarística, se me ha ocurrido preparar una mini aplicación que me permita enviar correos electrónicos con un contenido ya creado. Ni que decir tiene que es un ejemplo para mi y que no la voy a subir a la App Store :)

En el caso de mi aplicación, a la que he llamado Malabar, por el tema de los malabares y por la región sur de India Malabar, crearé 4 correos predefinidos para enviar a tantas personas como quiera a la vez.

Malabar

Se me ocurre que sería una buena idea para que practiquéis este ejemplo, que creéis algunos predefinidos para felicitar las fiestas, cumpleaños, etc.

Nos ponemos con el tema

Antes de nada quiero indicar a las personas que vienen siguiendo los tutoriales, que he actualizado mi Xcode por la versión Xcode 4.3.1.

Lo primero es crear un proyecto nuevo y tenemos que añadir el framework o librería MessageUI.

Una vez con el proyecto creado y el framework añadido, añado 3 imágenes .png a mi proyecto. Las medidas de estas imágenes son 57 x 57, 114 x 114 y la del fondo es de 320 x 480, todas en píxel. Unas para el icono de mi aplicación y la otra para el fondo.

Añadiendo imágenes

Ahora nos ponemos con el cursor en nuestro storyboard y añadimos al escenario estos elementos.

- 5 Button
- 1 Image View
- 2 Label
- 1 Text View

Para que vaya tomando la forma del ejemplo debéis haber practicado con las características de cada elemento. Modificando el tipo de letra, color de fondo, imagenes, el campo hidden, etc.

De esta forma es como debe aparecer cuando los arrastramos.

Objetos en el storyboard

Después de hacer las modificaciones de estos elementos aparecería de esta otra forma.

Elementos modificados

Está claro que podéis poner los colores y tamaños que más os gusten, así como el texto que os apetezca en las etiquetas y en los botones.

Lo único que es obligatorio es activar la propiedad hidden en el Label y en el Text View que tengo marcado con un asterisco *.

Una vez que tengamos la parte del diseño terminada pasamos a nuestros archivos de código.

Así debe quedar nuestro archivo .h

#import <UIKit/UIKit.h>
#import <MessageUI/MessageUI.h>

@interface ViewController : UIViewController
<MFMailComposeViewControllerDelegate> {
	
    IBOutlet UIButton *boton;
    IBOutlet UITextView *formato;
    IBOutlet UILabel *cargado;
}

-(IBAction)coleccion;
-(IBAction)ebayMate;
-(IBAction)EbayBarriguita;
-(IBAction)nuevo;
-(IBAction)Presionar;

@end

Así debe quedar nuestro archivo .m

#import "ViewController.h"
@implementation ViewController

-(IBAction)coleccion{
    boton.enabled = YES;
    boton.hidden = NO;
    cargado.hidden=NO;
    formato.text = @"Texto para Todo Colección";
}

-(IBAction)ebayMate{
    boton.enabled = YES;
    boton.hidden = NO;
    cargado.hidden=NO;
    formato.text = @"Texto para Ebay Mate";
}

-(IBAction)EbayBarriguita{
    boton.enabled = YES;
    boton.hidden = NO;
    cargado.hidden=NO;
    formato.text = @"Texto para Ebay Barriguitas";
}

-(IBAction)nuevo{
    formato.text = @"";
    cargado.hidden=YES;
    boton.hidden = NO;
}

- (IBAction)Presionar {
    MFMailComposeViewController *mailController = [[MFMailComposeViewController alloc] init];
	mailController.mailComposeDelegate = self;
    NSString *tipo = formato.text;
	[mailController setSubject: @"Referente al pedido"];
    [mailController setMessageBody: tipo isHTML:YES];
    [self presentModalViewController:mailController animated:YES];
}

- (void)mailComposeController:(MFMailComposeViewController*)controller 
didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{ 
    NSString *mensaje;
    switch (result)
    {
        case MFMailComposeResultCancelled: mensaje = @"Se ha cancelado.";
            break;
        case MFMailComposeResultSaved: mensaje = @"El correo electrónico ha sido guardado.";
            break;
        case MFMailComposeResultSent: mensaje = @"El correo electrónico ha sido enviado correctamente.";
            break;
        case MFMailComposeResultFailed: mensaje = @"Algo ha fallado.";
            break;
        default:
            break;
    }
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Untitled.es"
                                                    message:mensaje
                                                   delegate:self
                                          cancelButtonTitle:@"Aceptar"                                      
                                          otherButtonTitles: nil];
    [alert show];
    formato.hidden=TRUE;
    boton.hidden = YES;
    cargado.hidden = YES;
    [self dismissModalViewControllerAnimated:YES];
}

@end

Ahora con nuestro código ya puesto en los archivos volvemos a poner el cursor en el storyboard y enlazamos el código con nuestros elementos.

Debemos tener en cuenta que si hemos cambiado bien la propiedad de los que tienen que aparecer como hidden, ahora no vamos a verlos. Quizás tengáis más puntería enlazando primero y después poniendo en hidden, este orden no altera para nada la aplicación.

Enlazando código y elementos

Bueno, pues con esto estaría terminada nuestra aplicación. Sólo falta ejecutarla en el Iphone y podremos enviar un correo con el texto que hayamos predefinido antes.

Espero que os haya servido de ayuda.

@eneakao


Fundador de Untitled.es ♡ developer ( ) { web; graphic; iOS; } – http://pagarpoquito.com

6 pensamientos en “Enviar email con iOS

  1. Y cual sería el código para poder enviar un e-mail sin texto predefinido. Es decir que demos al botón de enviar e-mail y nos deje escribir un mensaje y escoger la direccion a la que queramos enviar??

    Graciasss!!

  2. Buenas Sandy, siempre que pulses estos botones que he creado te da la posibilidad de modificar el contenido y de seleccionar al destinatario.

    Con esto aparecería en blanco el correo para enviar


    -(IBAction)EmailEnBlanco{
    boton.enabled = YES;
    boton.hidden = NO;
    cargado.hidden=NO;
    formato.text = @" ";
    }

  3. Buenas, serias tan amable de dejarnos un link de descarga con el código o enviarmelo en un email, la verdad es que soy muy novato y quiero aprender e intente copiar lo que hiciste aquí pero no me resulto.

    Saludos

  4. Hola Maximiliano, me parece muy buena idea, lo tendré en cuenta para las siguientes entradas. Aun así, intentaré cuando saque un rato en estos días subir los ejemplos de las anteriores, incluida esta. Saludos!
  5. En primer lugar muuuuchas felicidades por tu web.. soy nuevo en esto de la programación para IOS y me está ayudando mucho en los proyectillos que tengo en mente :) GRACIAS!! :)
    Y Bueno.. ahora va mi consulta.. habría alguna manera de que se enviara diréctamente el mail al pulsar un programa en nuestra app sin tener q pasar a ver la vista del mailController para pulsar send cuando está todo ya definido?
  6. hola buenas noches me gusto bastante la aplicación y la intente crear pero no me sale no se que paso serias tan amable de mandarme el programa o el link de descarga. Para ver en que falle.
    saludos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>