2013-06-25 13 views
5

Sono nuovo di xcode e mi sto chiedendo come inviare email in un'app! Il mio codice è sotto, ma continuo a ricevere l'errore "Non visibile @interface per 'jakem' dichiara il selettore 'presentViewControllerAnimated:'". Il mio codice è completamente sbagliato? O ho appena dimenticato di dichiarare il selettore e come posso dichiarare il selettore? Ho fatto ricerche su Internet per almeno un'ora, e niente funziona. Qualcuno, per favore aiutami!Come inviare un'e-mail all'interno di un'app in Xcode?

-(IBAction)sendEmail{ 

    MFMailComposeViewController *composer = [[MFMailComposeViewController alloc] init]; 
    [composer setMailComposeDelegate:self]; 
    if ([MFMailComposeViewController canSendMail]) { 
    [composer setToRecipients:[NSArray   arrayWithObjects:@"[email protected]", nil]]; 
    [composer setModalTransitionStyle:UIModalTransitionStyleCrossDissolve]; 
    [self presentViewController:composer animated:YES]; 

    } 

    } 

    -(void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error { 
    if(error) { 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"error" message:[NSString stringWithFormat:@"error %@", [error description]] delegate:nil cancelButtonTitle:@"dismiss" otherButtonTitles:nil, nil]; 
    [alert show]; 
    [self dismissViewControllerAnimated:YES]; 
    } 
    else { 
    [self dismissViewControllerAnimated:YES]; 
    } 
    } 

risposta

0

Verificare se si è MFMailComposeViewControllerDelegate. A tale scopo, come

@interface YouClassName : UIViewController <MFMailComposeViewControllerDelegate> 

@end 
+0

Grazie per la risposta! E sì, l'ho fatto nel mio file di intestazione –

0

Penso che si sta utilizzando il metodo sbagliato. Prova

[self presentViewController:(UIViewController *) animated:(BOOL) completion:(void)completion]; 

invece di:

[self presentViewController:composer animated:YES]; 
0

utilizzare il Codice da qui per inviare e-mail all'interno di un app in Xcode

Send email from iOS app using SendGrid

+0

Per favore, prova a leggere questo http://stackoverflow.com/help/deleted-answers, per capire meglio come ** non ** rispondere. Vale a dire: "Risposte che non rispondono fondamentalmente alla domanda": ** a malapena più di un link a un sito esterno ** –

-1

Lavoro per SendGrid. Abbiamo una libreria Objective-c che ti consente di inviare rapidamente e-mail dall'interno della tua app, https://github.com/sendgrid/sendgrid-objc. Puoi usare cocoapods per installare rapidamente la libreria nel tuo progetto.

inviando poi l'e-mail dal proprio (IBAction) sarebbe simile a questa:

-(IBAction)sendEmail{ 

sendgrid *msg = [sendgrid user:@"username" andPass:@"password"]; 
msg.to = @"[email protected]"; 
msg.from = @"[email protected]"; 
msg.text = @"hello world"; 
msg.html = @"<h1>hello world!</h1>"; 

[msg sendWithWeb]; 

} 
7

nel file di intestazione .h ....

#import <UIKit/UIKit.h> 


#import <MessageUI/MessageUI.h> 



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



@end 

nel file di implementazione .m ....

- (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:@"[email protected]"]; 

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]; 
}