2

我使用以下代码从我的 iPad 应用程序发送电子邮件。电子邮件编辑器打开,但当我按下发送按钮时,什么也没有发生。有任何想法吗?

        MFMailComposeViewController *mailComposer;
        mailComposer  = [[MFMailComposeViewController alloc] init];
        mailComposer.mailComposeDelegate = self;
        [mailComposer setModalPresentationStyle:UIModalPresentationFormSheet];
        [mailComposer setSubject:@"your custom subject"];
        [mailComposer setMessageBody:@"your custom body content" isHTML:NO];
        [self presentViewController:mailComposer animated:YES completion:nil];

非常感谢

4

2 回答 2

2

好的,首先您实际上无法从模拟器发送电子邮件,因此您没有收到消息的事实是正常的。现在在驳回部分,这里是文档的相关部分:

您的委托对象负责在操作完成时关闭选取器。您可以使用 负责显示 MFMailComposeViewController 对象界面的父视图控制器的dismissModalViewControllerAnimated:方法来执行此操作。

所以剩下要做的就是实现委托方法并关闭控制器。可能是这样的:

- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error 
{
    // Handle any errors here & check for controller's result as well
    [self dismissModalViewControllerAnimated:YES];
}

此外,您更容易像这样首先以模态方式呈现控制器(< iOS6):

[self presentModalViewController:mailComposer animated:YES];

这是MFMailComposeResult您应该期望的常量。

于 2013-01-05T17:57:49.553 回答
1

您不能使用模拟器发送电子邮件。你应该在 iPhone 上试试。您还必须在 iPhone 中配置电子邮件帐户才能使用此功能。

您可以使用 if ([MFMailComposeViewController canSendMail]) 来检查您是否可以发送邮件。

于 2013-01-05T21:35:07.523 回答