2013-06-25 24 views
5

Tôi mới sử dụng xcode, và tôi tự hỏi làm cách nào để gửi email trong ứng dụng! Mã của tôi là dưới đây, nhưng tôi tiếp tục nhận được lỗi "Không nhìn thấy @interface cho 'jakem' tuyên bố selector 'presentViewControllerAnimated:'". Mã của tôi có hoàn toàn sai không? Hay tôi chỉ quên khai báo bộ chọn, và làm thế nào để khai báo bộ chọn? Tôi đã nghiên cứu trên internet trong ít nhất một giờ, và không có gì đang hoạt động. Ai đó hãy giúp tôi!Làm cách nào để gửi E-Mail bên trong ứng dụng trong 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]; 
    } 
    } 

Trả lời

0

Kiểm tra xem bạn có phải là MFMailComposeViewControllerDelegate hay không. Bạn làm điều này như

@interface YouClassName : UIViewController <MFMailComposeViewControllerDelegate> 

@end 
+0

Cảm ơn bạn đã trả lời! Và có, tôi đã làm điều đó trong tệp tiêu đề của tôi –

0

Tôi nghĩ bạn đang sử dụng phương pháp sai. Hãy thử

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

thay vì:

[self presentViewController:composer animated:YES]; 
0

Sử dụng mã từ vào đây để gửi email bên trong một ứng dụng trong xcode

Send email from iOS app using SendGrid

+0

Vui lòng thử đọc http://stackoverflow.com/help/deleted-answers này để hiểu thêm về cách ** không ** trả lời. Cụ thể: "Câu trả lời không trả lời về cơ bản câu hỏi": ** hầu như không chỉ liên kết đến một trang web bên ngoài ** –

-1

Tôi làm việc cho Sendgrid. Chúng tôi có một thư viện Objective-c cho phép bạn nhanh chóng gửi email từ bên trong ứng dụng của bạn, https://github.com/sendgrid/sendgrid-objc. Bạn có thể sử dụng cocoapods để nhanh chóng cài đặt thư viện trong dự án của bạn.

Sau đó gửi email của bạn (IBAction) sẽ trông như thế này:

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

trong tập tin tiêu đề .h ....

#import <UIKit/UIKit.h> 


#import <MessageUI/MessageUI.h> 



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



@end 

trong tập tin thực hiện .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]; 
} 
Các vấn đề liên quan