MFMailComposeViewController不发送邮件

时间:2010-08-03 10:43:16

标签: iphone email send mfmailcomposeviewcontroller

我正在尝试使用MFMailComposeViewController发送邮件。一切正常,除了邮件没有被发送,我总是得到MFMailComposeResultFailed。

任何指针?我没有使用模拟器,发送邮件可以在我的设备上运行。我确实有连接(通过Reachability进行测试),[MFMailComposeViewController canSendMail]返回YES。

项目中没有编译器警告,没有崩溃......

3 个答案:

答案 0 :(得分:2)

这是IOS4中的一个错误。

我的手机上有一个Exchange邮件帐户和一个旧的非活动IMAP帐户。显然,这会导致iOS4出现问题。邮件实际上卡在了发件箱里。一旦我删除了非活动的IMAP帐户,一切都按预期工作。

答案 1 :(得分:1)

有些读者可能会遇到这个问题:

确保您实施<MFMailComposeViewControllerDelegate>协议

以下是代码:

// in TestViewController.h
@interface TestViewController : UIViewController<MFMailComposeViewControllerDelegate>
@end

// in TestViewController.m
@interface TestViewController ()
@end

@implementation
- (void) compose {
    MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
    picker.mailComposeDelegate = self;

    [picker setSubject:@"Hello there"];

    [picker setToRecipients:@[]];

    // Fill out the email body text
    NSString *emailBody = @"Hello, sending a message from my app";

    [picker setMessageBody:emailBody isHTML:NO];

    // use this function. presentModalViewController:... is deprecated
    [self presentViewController:picker animated:YES completion:nil];
}

- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{
    [self dismissViewControllerAnimated:YES completion:nil];
}
@end

答案 2 :(得分:0)

在没有看到代码段的情况下很难判断,但是您应该检查以下内容:

1)您已正确设置MFMailComposeViewController's委托并实施其委托方法;

2)您已使用setSubject:

设置了邮件主题

3)您已使用setMessageBody:isHTML:

设置了邮件正文

并可选择使用addAttachmentData:mimeType:fileName:

设置附加

4)您已使用类似

之类的内容向用户呈现了您的邮件撰写视图控制器
[self presentModalViewController:mcvc animated:YES];

希望这有帮助。