Si quieres poder mandar un mail desde tu aplicación de iPhone, con este sencillo código podrás hacerlo sin problemas. Si quieres que se te despliegue la ventana del mail, tendrás que introducir el código dentro de un IBAction en el archivo de implementación previamente declarado en el archivo de cabecera o header.

Si quieres que se abra al pulsar un botón:

Lo primero de todo, debes importar al proyecto el Framework MessageUI. Después debes de poner en el archivo de cabecera (.h) lo siguiente:

#import <MessageUI/MessageUI.h>

A continuación, y en el archivo de implementación (.m) debes de añadir esto en el ViewDidLoad:

    if ([MFMailComposeViewController canSendMail])
        myButton.enabled = YES;

Después el IBAction:

    - (IBAction)openMail {

    if ([MFMailComposeViewController canSendMail])
        myButton.enabled = YES;
    MFMailComposeViewController *mailController= [[MFMailComposeViewController alloc] init];
    mailController.mailComposeDelegate=self;
    [mailController setSubject:@""];
    [mailController setMessageBody:@"" isHTML:NO];
    [self presentModalViewController:mailController animated:YES];
    [mailController release];
}
-   (void)mailComposeController:(MFMailComposeViewController*)mailController:didFinishWithResult:(MFMailComposeResult)result  error:(NSError*)error {
    [self becomeFirstResponder];
    [self dismissModalViewControllerAnimated:YES];
}

Y después otro void:

    - (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{
    switch (result)
    {
        case MFMailComposeResultCancelled:
            break;
        case MFMailComposeResultSaved:
            break;
        case MFMailComposeResultSent:
            break;
        case MFMailComposeResultFailed:
            break;

        default:
        {
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Email" message:@"Error al enviar el mail - Revise su conexión en inténtelo de nuevo"
                                 delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
            [alert show];
            [alert release];
        }

            break;
    }
    [self dismissModalViewControllerAnimated:YES];
}

Si quieres que se abra automáticamente al abrir una vista…

Si por el contrario quieres que aparezca al abrir una vista, el segundo código debe de ir dentro del ViewDidLoad, y deberás borrar la línea de -(IBAcion)openMail:(id)sender;

Lo primero de todo, debes importar al proyecto el Framework MessageUI. Después debes de poner en el archivo de cabecera (.h) lo siguiente:

#import <MessageUI/MessageUI.h>

Después, en el archivo de implementación (.m) debes de poner esto:

- (void)viewDidLoad {
    if ([MFMailComposeViewController canSendMail])
        myButton.enabled = YES;

    if ([MFMailComposeViewController canSendMail])
        myButton.enabled = YES;
    MFMailComposeViewController *mailController= [[MFMailComposeViewController alloc] init];
    mailController.mailComposeDelegate=self;
    [mailController setSubject:@""];
    NSArray *toRecipients = [NSArray arrayWithObject:@"info@plcMarkt.com"];
    [mailController setToRecipients:toRecipients];
    [mailController setMessageBody:@"" isHTML:NO];
    [self presentModalViewController:mailController animated:YES];
    [mailController release];
}
-   (void)mailComposeController:(MFMailComposeViewController*)mailController:didFinishWithResult:(MFMailComposeResult)result  error:(NSError*)error {
    [self becomeFirstResponder];
    [self dismissModalViewControllerAnimated:YES];

}
- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{
    switch (result)
    {
        case MFMailComposeResultCancelled:
            break;
        case MFMailComposeResultSaved:
            break;
        case MFMailComposeResultSent:
            break;
        case MFMailComposeResultFailed:
            break;

        default:
        {
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Email" message:@"Error al enviar el mail - Revise su conexión en inténtelo de nuevo"
                                 delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil];
            [alert show];
            [alert release];
        }

            break;
    }
    [self dismissModalViewControllerAnimated:YES];
}
Anuncios