2012-05-11 4 views
0

J'ai créé une application basée sur l'exemple de code "Tabster" d'Apple. L'application fonctionne très bien, mais je veux ajouter un courriel. J'ai créé une application de messagerie. et j'ai essayé toutes les approches auxquelles je peux penser, apprendre d'un tutoriel, ou lire, mais il se bloque continuellement. J'ai posé la question sur le Apple Dev. forum et plusieurs réponses devaient simplement "copier les fichiers sur l'application existante et vous devriez être bon." De toute évidence ce n'est pas si simple. J'ai ajouté le Framework MessageUI et j'ai essayé de copier les fichiers de différentes manières et je suis toujours coincé. Son vendredi et ce problème m'a retenu depuis lundi. Je suppose que la première partie est le fait qu'il y a 2 fichiers main.m et j'ai essayé de les combiner, j'ai essayé de renommer le fichier main.m du mail à emailmain.m. Je ne sais pas quoi d'autre à essayer.Comment ajouter un e-mail à une application iOS existante

C'est incroyable pour moi que toute la documentation et tous les tutoriels sur la création de courrier électronique dans une application iOS commencent tous par la création d'une nouvelle application. Qu'est-ce que je rate? Comment ajouter un e-mail dans une application entièrement fonctionnelle J'apprécierais toute orientation, liens vers la littérature, ou des tutoriels sur le sujet.

Toute aide que je peux obtenir à ce sujet sera grandement appréciée. Il y a plusieurs autres types de choses que je voudrais ajouter, mais je ne peux même pas mettre en place un email!

Nous vous remercions de votre aide. John

+0

Vous ne pouvez pas simplement copier le main.m et attendre que cela fonctionne. Vous devez copier le code à partir de celui-ci. La réponse ci-dessous vous aidera mais il semble que vous devez commencer par un tutoriel très basique sur l'utilisation d'Objective-C et iOS SDK. –

Répondre

3

C'est la méthode que j'utilise tout le temps. Il devrait pouvoir être ajouté à n'importe quel UIViewController simple et propre.

Importez votre cadre:

#import <MessageUI/MessageUI.h> 

Assurez-vous d'inclure votre délégué dans l'interface:

@interface MyViewController : UIViewController <MFMailComposeViewControllerDelegate> 

Ensuite, dans votre implémentation ajouter cette méthode ou une variation si vous avez besoin d'être un IBAction ou quelque chose comme ça:

- (void)sendEmail 
{  
    if ([MFMailComposeViewController canSendMail]) { 
     MFMailComposeViewController *email = [[MFMailComposeViewController alloc] init]; 
     email.mailComposeDelegate = self; 

     [email setSubject:@"My Email Subject"]; 

     [email setMessageBody:@"My message body." isHTML:NO]; 

     [self presentModalViewController:email animated:YES]; 

    } else { 
     UIAlertView *emailAlert = [[UIAlertView alloc] initWithTitle:@"Email Failure" message:@"Your device is not configured to send email" delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
     [emailAlert show]; 
    } 
} 

Vous pouvez appeler cette méthode sur un clic de bouton ou un Tout ce que tu veux. Il affichera une vue de compositeur d'e-mail dans laquelle votre utilisateur peut cliquer sur envoyer.

0

Vous devez importer le Framework MessageUI. Où que vous vouliez l'utiliser, importez-le dans le fichier .h correspondant et configurez MFMailComposeViewControllerDelegate.

#import <MessageUI/MessageUI.h> 
@interface ViewController : UIViewController <MFMailComposeViewControllerDelegate> 

Puis, quand vous voulez envoyer un message utilisez le code suivant dans le fichier .m:

MFMailComposeViewController *mailViewController = [[MFMailComposeViewController alloc] init]; 
mailViewController.mailComposeDelegate = self; 

// Optional Configuration Parameters to make life easier for the user 
[mailViewController setSubject:subjectString]; 
[mailViewController setMessageBody:messageString isHTML:YES]; 
[mailViewController setToRecipients:recipientsArray]; 

// Present the VIew Controller and clean up after ourselves 
[self presentModalViewController:mailViewController animated:YES]; 
[mailViewController release]; 

Ajouter la méthode déléguée appropriée, vous pouvez l'utiliser pour rejeter le contrôleur une fois l'e-mail est envoyé:

-(void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error { 
    [self dismissModalViewControllerAnimated:YES]; 
} 
0

Voici un exemple de code pour créer un e-mail avec une image en pièce jointe .Vous pouvez le modifier en fonction de vos besoins.

-(void)createEmail 
    { 
    NSMutableString *emailBody = [[[NSMutableString alloc] initWithString:@"<html><body>"] retain]; 
     [emailBody appendString:@"<p>Some email body text can go here</p>"]; 
     UIImage *emailImage = [UIImage imageNamed:@"myImageName.png"]; 
     NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(emailImage)]; 

     NSString *base64String = [imageData base64EncodedString]; 
     [emailBody appendString:[NSString stringWithFormat:@"<p><b><img src='data:image/png;base64,%@'></b></p>",base64String]]; 
     [emailBody appendString:@"</body></html>"]; 
     NSLog(@"%@",emailBody); 

    //mail composer window 
     MFMailComposeViewController *emailDialog = [[MFMailComposeViewController alloc] init]; 
     emailDialog.mailComposeDelegate = self; 
     [emailDialog setSubject:@"My Inline Image Document"]; 
     [emailDialog setMessageBody:emailBody isHTML:YES]; 

     [self presentModalViewController:emailDialog animated:YES]; 
     [emailDialog release]; 
     [emailBody release]; 
    } 
Questions connexes