Objective-C:发送隐藏的电子邮件

时间:2015-02-19 02:41:18

标签: ios objective-c email mfmailcomposeviewcontroller

我对iOS编程中的MFMailComposeViewController有疑问。我对这门语言比较陌生,我的目标是通过我正在创建的应用程序发送隐藏的电子邮件。我想发送一封电子邮件,而无需用户按下弹出电子邮件对话框时出现的发送按钮。如何在没有显示对话框的情况下发送电子邮件?

以下是我的代码:

    //Sending Mail
    -(IBAction)sendemail:(id)sender
    {
        if ([MFMailComposeViewController canSendMail])
        {
            MFMailComposeViewController *mail = [[MFMailComposeViewController alloc] init];
            mail.mailComposeDelegate = self;
            [mail setSubject:@"Sample Subject"];
            [mail setMessageBody:@"Here is some main text in the email!" isHTML:NO];
            [mail setToRecipients:@[@"test@example.com"]];

            [self presentViewController:mail animated:YES completion:NULL];
        }
        else
        {
            NSLog(@"This device cannot send email");
        }
    }

    - (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
    {
        switch (result) {
            case MFMailComposeResultSent:
                NSLog(@"You sent the email.");
                break;
            case MFMailComposeResultSaved:
                NSLog(@"You saved a draft of this email");
                break;
            case MFMailComposeResultCancelled:
                NSLog(@"You cancelled sending this email.");
                break;
            case MFMailComposeResultFailed:
                NSLog(@"Mail failed:  An error occurred when trying to compose this email");
                break;
            default:
                NSLog(@"An error occurred when trying to compose this email");
                break;
        }

        [self dismissViewControllerAnimated:YES completion:NULL];
    }

提前感谢所有回复的人。我真的很感激。

2 个答案:

答案 0 :(得分:3)

  

MFMailComposeViewController ....我的目标是发送隐藏的电子邮件

这些目标是矛盾的。如果您想从用户秘密发送电子邮件,则使用MFMailComposeViewController。您必须教您的应用SMTP并使用低级别网络自行发送电子邮件。 (如果Apple发现你正在做这件事,我希望他们会把你的应用从商店里拉出来。)

答案 1 :(得分:0)

Apple不允许您隐藏MFMailComposeViewController。您需要使用网络服务发送电子邮件。

使用NSURLRequestNSURLConnection向Web服务器发送请求,该服务器接受代表您要发送的电子邮件的JSON数据的有效内容。然后,Web服务器将解析数据,执行任何必要的验证和处理,然后自行发送电子邮件或与第三方电子邮件服务进行交互。您也可以尝试切断中间人服务器并直接从应用程序直接与第三方电子邮件服务进行交互,但是这种方法可能存在一些挑战,即API令牌的安全性可能会被应用到应用程序本身将您的第三方帐户置于滥用行为。

来自Mailgun Objective-C SDK的示例代码:

Mailgun *mailgun = [Mailgun clientWithDomain:@"samples.mailgun.org" apiKey:@"key-3ax6xnjp29jd6fds4gc373sgvjxteol0"];
[mailgun sendMessageTo:@"Jay Baird <jay.baird@rackspace.com>" 
                   from:@"Excited User <someone@sample.org>" 
                subject:@"Mailgun is awesome!" 
                   body:@"A unicode snowman for you! ☃"];