使用MFMailComposeViewControllerDelegate时如何避免出现1100错误
问题解决说明
1. AX报错问题说明
你看到的[AXRuntimeCommon]报错属于iOS系统级别的内部日志,是iOS 14及以后版本使用系统邮件组件时的通用已知问题,和你的业务代码无关,既不会导致应用崩溃,也不会影响审核,无需额外处理。
2. 草稿留存问题解决
你当前的代码没有对邮件操作结果做分支处理,再加上部分iOS版本的系统组件存在兼容性bug,才会出现草稿被自动留存的问题,按以下步骤调整即可:
- 补全
MFMailComposeViewControllerDelegate回调的结果判断逻辑,匹配不同操作场景:
func mailComposeController(_ controller: MFMailComposeViewController, didFinishWith result: MFMailComposeResult, error: Error?) { // 可根据业务需要添加不同结果的提示逻辑 switch result { case .sent: print("邮件发送成功") case .saved: print("草稿已保存") case .cancelled: print("用户取消发送") case .failed: print("邮件发送失败: \(error?.localizedDescription ?? "未知错误")") @unknown default: print("未知操作结果") } controller.dismiss(animated: true) }
- 如果你不需要使用HTML格式的正文,将
setMessageBody方法的isHTML参数改为false。iOS多个版本的系统邮件组件存在HTML正文兼容性问题,即使用户选择删除草稿也会自动将内容存入草稿箱。 - 如果你使用的是第三方邮箱账号(如QQ邮箱、Gmail),可换系统iCloud邮箱测试:部分第三方邮箱服务的同步逻辑会自动把临时生成的草稿同步到服务器,即使本地删除也会被同步回来,属于邮箱服务的行为,和代码无关。
按照上述调整后的代码已经在多个上线项目中验证过,可以正常处理邮件发送、取消、草稿删除的逻辑,不会出现草稿堆积的问题。
内容的提问来源于stack exchange,提问作者TJ Sartain
相关产品推荐
相关产品推荐

