【问题标题】:Sending Email in iOS Apps [closed]在 iOS 应用程序中发送电子邮件 [关闭]
【发布时间】:2015-10-08 05:34:50
【问题描述】:

我希望能够构建一个简单的电子邮件客户端来发送电子邮件。

我查看了有关使用 MessageUI 框架构建电子邮件客户端的 IOS 编程 101 教程,但我想在我的应用程序中实现的内容略有不同。

我想要实现的是,当我按下一个按钮时,一个预先编写的电子邮件(将由我编写,例如,像 YOLO)将直接发送给收件人。

无论如何我可以做到这一点吗?

PS:我根本不需要 Mail ComposeViewController,只是一个用于发送预先编写的邮件的简单按钮。

非常感谢

问候

【问题讨论】:

    标签: ios objective-c swift email mfmailcomposeviewcontroller


    【解决方案1】:

    在您的视图控制器中导入“MessageUI.h”并实现“MFMailComposeViewControllerDelegate”委托。

    #import <MessageUI/MessageUI.h> 
    
    interface YourViewController : UIViewController <MFMailComposeViewControllerDelegate> // Add the delegate
    
    
    - (void)sendEmail {
        // Email Subject
        NSString *emailTitle = @"Test Email";
        // Email Content
        NSString *messageBody = @"Test Subject!";
        // To address
        NSArray *toRecipents = [NSArray arrayWithObject:@"support@test.com"];
    
        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】:

      AFAIK,您可以预先撰写和发送电子邮件、添加收件人等,但 MFMailComposeViewController 仍然必须绝对出现。

      不能只需单击一个按钮即可发送电子邮件,而用户不知道发送了什么或发送给谁。它也反对 Apple HIG。

      一种可能的替代方法是对服务器进行 api 调用,并让服务器实现电子邮件发送部分。类似的东西:

      NSURLRequest requestWithURL:[NSURL urlWithString:@"http://yourserver.com/send_preset_mail?to=email@xyz.com"]];
      

      【讨论】:

      • 好吧,如果那是真的,那就有点可悲了.. 哈哈,我只是在尝试有趣的应用程序。不过感谢您的提示。欣赏它。编辑:好的,我会尝试看看你的第二种方法是否对我不起作用。非常感谢
      【解决方案3】:

      您可以使用第三方库来实现这一点。 MailCore-iOS 是一个用于开发邮件应用程序的优秀第三方库。

      https://github.com/MailCore/mailcore2/blob/master/build-mac/README.md

      这里详细描述了如何使用,我建议使用二进制版本,而不是 cocoa-pods。

      【讨论】:

      • 谢谢,我会检查的。
      • 这是正宗的方式吗?如果我们使用它,应用会被拒绝吗?
      【解决方案4】:

      您可以为此创建 api。 如果您不想创建 api,则可以使用 smtp 协议发送电子邮件,而无需打开 MFMailComposer。

      Open Source Cocoa/Cocoa-Touch POP3/SMTP library?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-10-30
        • 2011-11-07
        • 2016-05-16
        • 2011-11-03
        • 1970-01-01
        • 1970-01-01
        • 2012-05-23
        相关资源
        最近更新 更多