【问题标题】:How to send an E-Mail inside of an app in Xcode?如何在 Xcode 中的应用程序内发送电子邮件?
【发布时间】:2013-06-22 11:11:48
【问题描述】:

我是 xcode 的新手,想知道如何在应用程序中发送电子邮件!我的代码在下面,但我不断收到错误消息“'jakem' 没有可见的@interface 声明选择器'presentViewControllerAnimated:'”。我的代码完全错误吗?还是我只是忘记声明选择器,如何声明选择器?我已经在互联网上研究了至少一个小时,但没有任何效果。有人请帮助我!

    -(IBAction)sendEmail{

    MFMailComposeViewController *composer = [[MFMailComposeViewController alloc] init];
    [composer setMailComposeDelegate:self];
    if ([MFMailComposeViewController canSendMail]) {
    [composer setToRecipients:[NSArray          arrayWithObjects:@"FrankMurphy.CEO@RomansXIII.com", 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];
    }
    }

【问题讨论】:

    标签: ios email send


    【解决方案1】:

    在.h头文件中......

     #import <UIKit/UIKit.h>
    
    
    #import <MessageUI/MessageUI.h>
    
    
    
    @interface SimpleEmailViewController : UIViewController <MFMailComposeViewControllerDelegate> // Add the delegate
    - (IBAction)showEmail:(id)sender;
    
    
    
    @end
    

    在.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:@"info@finetechnosoft.in"];
    
    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];
    }
    

    【讨论】:

      【解决方案2】:

      我为 Sendgrid 工作。我们有一个 Objective-c 库,可让您从应用程序内部快速发送电子邮件,https://github.com/sendgrid/sendgrid-objc。您可以使用 cocoapods 在您的项目中快速安装该库。

      然后从您的 (IBAction) 发送电子邮件将如下所示:

      -(IBAction)sendEmail{
      
      sendgrid *msg = [sendgrid user:@"username" andPass:@"password"];
      msg.to = @"FrankMurphy.CEO@RomansXIII.com";
      msg.from = @"me@bar.com";
      msg.text = @"hello world";   
      msg.html = @"<h1>hello world!</h1>";
      
      [msg sendWithWeb];
      
      }
      

      【讨论】:

        【解决方案3】:

        我认为您使用了错误的方法。试试

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

        代替:

        [self presentViewController:composer animated:YES];
        

        【讨论】:

          【解决方案4】:

          检查你是否是 MFMailComposeViewControllerDelegate。 你这样做

          @interface YouClassName : UIViewController <MFMailComposeViewControllerDelegate> 
          
          @end
          

          【讨论】:

          • 感谢您的回复!是的,我在头文件中这样做了
          猜你喜欢
          • 1970-01-01
          • 2010-12-20
          • 1970-01-01
          • 1970-01-01
          • 2013-03-13
          • 1970-01-01
          • 2014-10-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多