2013-06-25 22 views
5

Jestem nowy w Xcode i zastanawiam się, jak wysłać wiadomość e-mail w aplikacji! Mój kod jest poniżej, ale ciągle pojawia się błąd "Brak widocznego interfejsu @ dla" jakem "deklaruje selektor" presentViewControllerAnimated: "". Czy mój kod jest całkowicie błędny? Czy po prostu zapomniałem zadeklarować selektor i jak zadeklarować selektor? Badałem cały internet przez co najmniej godzinę i nic nie działa. Niech ktoś mi pomoże!Jak wysłać wiadomość e-mail do aplikacji w 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]; 
    } 
    } 

Odpowiedz

0

Sprawdź, czy jesteś MFMailComposeViewControllerDelegate. to zrobić jak

@interface YouClassName : UIViewController <MFMailComposeViewControllerDelegate> 

@end 
+0

Dzięki za odpowiedź! I tak zrobiłem to w moim pliku nagłówkowym –

0

myślę używasz niewłaściwy sposób. Spróbuj

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

zamiast:

[self presentViewController:composer animated:YES]; 
0

Użyj kod tutaj, aby wysłać e-mail wewnątrz aplikacji w Xcode

Send email from iOS app using SendGrid

+0

Proszę, spróbuj przeczytać ten http://stackoverflow.com/help/deleted-answers, aby uzyskać więcej zrozumienia, jak ** nie ** odpowiedzieć. Mianowicie: "Odpowiedzi, które zasadniczo nie odpowiadają na pytanie": ** niewiele więcej niż link do strony zewnętrznej ** –

-1

pracuję Sendgrid. Mamy bibliotekę Objective-c, która pozwala szybko wysyłać wiadomości e-mail z poziomu aplikacji, https://github.com/sendgrid/sendgrid-objc. Możesz użyć cocoapods, aby szybko zainstalować bibliotekę w swoim projekcie.

Następnie wysyłając e-mail z (IBAction) wyglądałby następująco:

-(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

w pliku nagłówka .h ....

#import <UIKit/UIKit.h> 


#import <MessageUI/MessageUI.h> 



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



@end 

w .m pliku wdrażania ....

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