什么时候[MFMailComposeViewController canSendMail]会返回NO

pyt*_*ick 43 iphone objective-c

我的iPhone应用程序正在使用MFMailComposeViewController类发送带有附件的应用内电子邮件.如果类MFMailComposeViewController的"canSendMail"方法返回true(YES),则应用程序将仅尝试显示邮件编辑器对话框.具体来说,如果以下方法返回YES,则显示邮件编写器,否则将向用户显示错误警告对话框,指出设备上没有设置电子邮件帐户:

- (BOOL)canDeviceSendEmail
{
    Class mailClass = (NSClassFromString(@"MFMailComposeViewController"));
    return mailClass != nil && [mailClass canSendMail];
}
Run Code Online (Sandbox Code Playgroud)

一组测试人员报告说,即使在设备上设置了电子邮件帐户,他们也会收到此错误警告对话框.测试人员使用iPhone 3G和OS 3.1.3.因此,MFMailComposeViewController类必须存在,并且"canSendMail"方法必须返回NO.

因此,我的问题是:除了在设备上没有设置电子邮件帐户的情况下,"canSendMail"方法在其他情况下是否返回NO?

〜谢谢

byn*_*eri 70

如果设备上至少启用了一个电子邮件帐户,则以下呼叫应返回YES:

[MFMailComposeViewController canSendMail]
Run Code Online (Sandbox Code Playgroud)

相反,如果所有帐户都被禁用/删除,它将返回NO.


ken*_*ytm 10

对于+canSendMail返回YES默认帐户必须建立用于发送电子邮件.

(内部+[MFMailComposeViewController canSendMail]调用+[MailAccountProxy defaultMailAccountForDelivery],查找第一个邮件帐户-isDefaultDeliveryAccount.)


Ste*_*ser 7

除了未在设备上设置的电子邮件帐户外,canSendMail还会NO在安装MDM配置文件并将其配置为不允许第三方应用程序发送邮件时返回.在这种情况下,你必须使用openURL:一个mailto:以推出Mail.app和可选填到,抄送,密送,主题和正文字段URL.

mailto:RFC - https://tools.ietf.org/html/rfc2368


Tun*_*her 5

这对我有用。

在 Device Go 设置->邮件、联系人、日历->帐户

在这里您可以看到没有添加帐户。现在添加帐户现在返回到您的应用程序,您可以发现这次返回是,您可以发送电子邮件。谢谢