Developpez.com

Plus de 2 000 forums
et jusqu'à 5 000 nouveaux messages par jour

Envoyer des courriels avec une application iPhone

Dans ce tutoriel, nous allons vous montrer comme il est simple d'envoyer un courriel avec votre application.

Les commentaires et les suggestions d'amélioration sont les bienvenus, alors, après votre lecture, n'hésitez pas. Commentez Donner une note à l'article (5).

Article lu   fois.

Les deux auteur et traducteur

Traducteur : Profil Pro

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

1. Créer une application avec une vue et un bouton

Le SDK iOS a rendu vraiment facile l'envoi des courriels à l'aide des API intégrées. En quelques lignes de code, vous pouvez avoir la même interface de courrier électronique que l'application « stock Mail » qui vous permet de composer un courriel. Dans ce tutoriel, nous allons construire une application très simple pour vous montrer comment envoyer à la fois des courriels au format texte et HTML en utilisant le SDK iOS.

Image non disponible

Tout d'abord, créons une application simple avec un contrôleur de vues et un bouton. Si vous n'avez aucune idée de comment le faire, il vaut mieux revoir le tutoriel Hello World. Appelons ce projet « SimpleEmail ». Une fois que vous avez créé votre projet, ajoutez un bouton "Contact Us" dans la vue.

Image non disponible
L'application « SimpleEmail » avec son bouton « Contact Us »

Que va faire cette application ? Elle va afficher l'interface mail lorsque l'utilisateur clique sur le bouton « Contact Us ».

2. Associer le bouton « Contact Us » à une action

Dans les tutoriels précédents, pour ajouter l'action, nous ajoutions manuellement le code dans le fichier d'en-tête du fichier de contrôleur de vues. Ensuite, il nous suffisait de relier cette action au bouton avec Interface Builder.

Cette fois-ci, laissez-nous vous présenter une autre façon d'ajouter l'action (assurez-vous d'utiliser Xcode 4.3 ou plus).

Dans le navigateur de projet, sélectionnez le fichier "SimpleEmailViewController.xib" pour aller à l'Interface Builder. Basculez vers l'assistant de l'éditeur et masquez la zone utilitaire (Utility) :

Image non disponible
Afficher l'assistant de l'éditeur et cacher la zone utilitaire

Une fois cela fait, votre environnement Xcode devrait ressembler à l'écran ci-dessous. L'interface et son code correspondant sont maintenant affichés côte à côte :

Image non disponible
Interface utilisateur et code affichés côte à côte

Nous allons maintenant ajouter une action pour le bouton « Contact Us ». Appuyez et maintenez enfoncée la touche « contrôle » (CTRL), cliquez sur le bouton « Contact Us » et faites-le glisser vers « SimpleEmailViewController.h ». Lorsque vous placez la souris entre les mots-clés « @interface » et « @end », vous devriez voir une invite qui vous permet d'insérer la sortie et l'action.

Image non disponible
Invite pour saisir la sortie et l'action

Relâchez le bouton de la souris et Xcode vous invite à ajouter la sortie et l'action. Comme nous allons adjoindre une action, sélectionnez « Action » pour « Connection » et le nom de la méthode « showEmail ». Vous pouvez conserver l'événement « Touch Up Inside ». La méthode « showEmail » sera invoquée lorsque l'utilisateur relâchera son doigt du bouton.

Image non disponible
Ajout de l'action showEmail

Une fois que vous validez la modification en cliquant sur le bouton « Connect », Xcode ajoute automatiquement la déclaration de la méthode dans le fichier « SimpleEmailViewController.h ».

Image non disponible
Xcode ajoute automatiquement la méthode showEmail

3. Mettre en place l'interface courriel

Ensuite, importez le fichier « MessageUI.h » et implémentez la méthode « MFMailComposeViewControllerDelegate » dans le fichier « SimpleEmailViewController.h ».

 
Sélectionnez
#import <UIKit/UIKit.h>
#import <MessageUI/MessageUI.h> 

@interface SimpleEmailViewController : UIViewController <MFMailComposeViewControllerDelegate> // Add the delegate
- (IBAction)showEmail:(id)sender;

@end

Sélectionnez « SimpleEmailViewController.m », nous allons implanter les méthodes « showEmail » et « MFMailComposeViewControllerDelegate ». Ajoutez le code suivant dans le fichier :

 
Sélectionnez
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
- (IBAction)showEmail:(id)sender {
    // Email Subject
    NSString *emailTitle = @"Test Email";
    // Email Content
    NSString *messageBody = @"iOS programming is so fun!";
    // To address
    NSArray *toRecipents = [NSArray arrayWithObject:@"support@appcoda.com"];
    
    MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init];
    mc.mailComposeDelegate = self;
    [mc setSubject:emailTitle];
    [mc setMessageBody:messageBody isHTML:NO];
    [mc setToRecipients:toRecipents];

    // Present mail view controller on screen
    [self presentViewController:mc animated:YES completion:NULL];

}

- (void) mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
    switch (result)
    {
        case MFMailComposeResultCancelled:
            NSLog(@"Mail cancelled");
            break;
        case MFMailComposeResultSaved:
            NSLog(@"Mail saved");
            break;
        case MFMailComposeResultSent:
            NSLog(@"Mail sent");
            break;
        case MFMailComposeResultFailed:
            NSLog(@"Mail sent failure: %@", [error localizedDescription]);
            break;
        default:
            break;
    }
    
    // Close the Mail Interface
    [self dismissViewControllerAnimated:YES completion:NULL];
}

Les lignes 3 à 7 de ce code définissent le sujet du courriel, le corps du message ainsi que les destinataires. Les lignes 9 à 13 créent un objet « MFMailComposeViewController ». La classe « MFMailComposeViewController » fournit une interface standard qui gère l'édition et l'envoi d'un courriel. Vous pouvez utiliser cette classe pour afficher un courriel standard dans votre application. Renseignons les champs de cet objet avec les valeurs initiales des destinataires, du sujet et du corps de texte.

La ligne 13 de ce code appelle la méthode « presentViewController » pour afficher l'interface courriel à l'écran.

La méthode « didFinishWithResult » est une méthode du protocole « MFMailComposeViewControllerDelegate ». Cette méthode est appelée automatiquement lorsque l'interface de messagerie est fermée (par exemple, lorsque l'utilisateur annule l'opération). Le résultat retourné est le code de résultat lorsque l'interface de courrier est fermée. Par souci de simplicité, dans cet exemple, nous enregistrons tout simplement ce résultat. Dans une application réelle, vous devriez fournir un traitement spécial pour ce résultat (par exemple, afficher une alerte lorsque l'application ne parvient pas à envoyer le courriel).

Enfin, la ligne 41 referme l'interface mail.

4. Ajout de la bibliothèque MessageUI

Ce n'est pas fini. Si vous essayez de compiler l'application, vous obtenez l'erreur de compilation ci-dessous :

Image non disponible
Erreur de compilation de l'application SimpleEmail

Le problème est que Xcode n'a aucune idée de ce qu'est « MFMailComposeViewController ». Bien que « MFMailComposeViewController » soit un contrôleur intégré dans le SDK iOS, il est de la responsabilité du développeur de l'intégrer au projet. Lorsque le projet Xcode est créé, il connaît seulement trois bibliothèques de base, « UIKit », « Fondation » et « CoreGraphics ». « MFMailComposeViewController » étant utilisé dans MessageUI, vous devez l'ajouter manuellement.

Pour corriger l'erreur, nous devons incorporer le fichier dans le projet. Dans le navigateur de projet, sélectionnez le projet « SimpleEmail » puis sélectionnez la cible « SimpleEmail » sous la rubrique « targets ». Cliquez sur « Build Phases » en haut de l'éditeur de projet. Ensuite, ouvrez la section « Link Binary With Libraries ».

Image non disponible
Ajout de fichiers dans les phases de génération

Puis cliquez sur le bouton « + » et sélectionnez « MessageUI.framework ». Après avoir cliqué sur le bouton « Add », Xcode ajoute MessageUI dans votre projet.

Image non disponible
Ajout de MessageUI Framework au projet Xcode

Maintenant l'erreur devrait être corrigée. Exécutez votre application et vérifiez son bon fonctionnement. L'appui sur le bouton « Contact Us » affiche l'interface « Compose Email » et son contenu pré-renseigné.

Image non disponible
L'application SimpleEmail

5. Composer un courriel HTML

Jusqu'à maintenant, l'application « SimpleEmail » ne prenait en charge que les courriels au format texte brut. Vous pouvez facilement activer le support HTML en modifiant le paramètre « isHTML » de la la méthode "de « setMessageBody » de « N » à « Y ». Modifiez le code de la méthode « showEmail » comme suit :

 
Sélectionnez
- (IBAction)showEmail:(id)sender {
    // Email Subject
    NSString *emailTitle = @"Test Email";
    // Email Content
    NSString *messageBody = @"<h1>Learning iOS Programming!</h1>"; // Change the message body to HTML
    // To address
    NSArray *toRecipents = [NSArray arrayWithObject:@"support@appcoda.com"];
    
    MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init];
    mc.mailComposeDelegate = self;
    [mc setSubject:emailTitle];
    [mc setMessageBody:messageBody isHTML:YES];
    [mc setToRecipients:toRecipents];

    // Present mail view controller on screen
    [self presentViewController:mc animated:YES completion:NULL];

}

Compilez et lancez l'application à nouveau. Avec ce simple changement, l'application « SimpleEmai » offre maintenant le support HTML !

Image non disponible
L'application SimpleEmail avec support HTML

Comme toujours, laissez-nous un commentaire et partagez vos idées au sujet de ce tutoriel. Si vous avez des suggestions pour la série iOS programmation 101, n'hésitez pas à nous le faire savoir.

6. Remerciements

Nous remercions l'auteur, Simon ng,pour son article. Cet article est une traduction autorisée dont le texte original peut être trouvé sur Appcoda.com. Nous remercions aussi ram-0000 pour sa traduction, Lolo78 pour sa relecture technique ainsi que ced pour sa relecture orthographique.

Les commentaires et les suggestions d'amélioration sont les bienvenus, alors, après votre lecture, n'hésitez pas. Commentez Donner une note à l'article (5).

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2012 simon ng. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.