使用MFMailComposeViewController发送消息失败

时间:2011-12-08 19:26:48

标签: objective-c ios cocoa-touch

我最近向Apple提交了一个应用程序,遗憾的是它被拒绝了。给出的原因是它有一封电子邮件给朋友功能,但没有用。 (不用说,但它在我的设备上运行良好)。我正在使用MFMailComposeViewController,填充主题和正文并添加附件。然后,用户必须执行剩余的操作才能发送。当我要求详细说明时,审稿人说......

  

我们与您的应用一起发送的电子邮件列在Gmail和雅虎测试帐户“发件箱”中,并显示错误,指出无法联系到外发邮件服务器。

...这应该算作我的应用程序的错误吗?我实际上并没有发送邮件,我只是使用内置的SDK调用来准备邮件。我知道“这是你的设备”这个论点并没有真正推动我批准我的应用程序,但我认为这是他们的设备。

任何人都可以想到电子邮件会因为这样的消息而失败的原因,以及我可以真正做些什么吗?

现在我的代码......

...我发送消息的地方

- (void)sendMail
{
    NSData *vCards = (NSData *)ABPersonCreateVCardRepresentationWithPeople((CFArrayRef)self.selections);

    MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init];  
    mc.mailComposeDelegate = self;  

    [mc setSubject:@"Contact"];

    [mc setMessageBody:@"<p>My message...<p>" isHTML:YES];  
    NSString *label = ([self.selections count] == 1)? (NSString *)ABRecordCopyCompositeName([self.selections objectAtIndex:0]): @"Contacts";

    [mc addAttachmentData:vCards mimeType:@"text/x-vcard" fileName:label];

    [self presentModalViewController:mc animated:YES];  
    [mc release];  
}

- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error {  
    switch (result) {  
        case MFMailComposeResultCancelled:  
            NSLog(@"Mail send canceled.");  
            break;  
        case MFMailComposeResultSaved:  
            NSLog(@"Mail saved.");  
            break;  
        case MFMailComposeResultSent:  
            NSLog(@"Mail sent.");  
            break;  
        case MFMailComposeResultFailed:  
            NSLog(@"Mail send error: %@.", [error localizedDescription]);  
            break;  
        default:  
            break;  
    }  
    [self dismissModalViewControllerAnimated:YES];  
}

现在我明白,如果邮件失败,我实际上并没有做任何有用的事情,但如果在撰写级别失败,该邮件是否应该转到用户的发件箱?

我将提交另一个警告错误详情的版本,但我怀疑会有任何错误。

3 个答案:

答案 0 :(得分:3)

我做了类似的事情,你能尝试不发送vcard吗?告诉我它是否有效......

答案 1 :(得分:1)

这可能只是一个模糊的拒绝原因,因为您没有处理发送错误。我有一个非常类似的反馈实现。我会考虑显示一个警告说明原因是什么,并让用户再试一次。 Apple会检查您的几乎所有可能性。

答案 2 :(得分:0)

昨晚在我的iPhone上,我收到了来自iTunesConnect的通知,我的应用程序处于审核状态&gt;等待审核&gt; “App Store处理”&gt;准备出售,一切都在快速连续。决议中心没有进一步的说明,我没有收到Apple关于此问题的其他电子邮件。我很高兴这一切都得到了解决,但仍然有一个挥之不去的疑问,一些边缘案例的错误将让我死一星。对不起,决议太无聊了。

这是我在商店中的应用:http://itunes.apple.com/us/app/cloner/id483981001?mt=8(插件)。感谢大家提出的很好的建议。