iOS调用Outlook APP发带附件邮件如何填充全部收发件及内容字段
预填Outlook iOS所有发信字段的可行方案
组合URL Scheme与分享扩展的稳定方案
你之前测试的两种方案可以结合使用,解决各自的缺陷,实测iOS 15+、Outlook v4.2130+版本均稳定兼容:
- 先拼接完整的
ms-outlook://compose?to=<收件人地址>&cc=<抄送地址>&subject=<主题>&body=<正文>协议参数,所有字符串记得做URL编码,调用该Scheme拉起Outlook发信页,此时收件人、抄送、主题、正文已全部预填完成 - 同步调用
UIActivityViewController,指定分享内容为你的附件文件,限定Activity类型为com.microsoft.Office.Outlook.SharingExtension,即可直接把附件传入已经拉起的Outlook发信页,不需要用户手动选择附件 - 你提到的
ms-outlook-accepts-attachments标识可以直接在分享配置字典中添加键值对@"ms-outlook-accepts-attachments": @YES,即可明确告知Outlook分享扩展接收附件,无需额外配置;同时你可以在分享内容的配置字典中添加@"com.microsoft.activityitems.recipients.to": <收件人数组>、@"com.microsoft.activityitems.recipients.cc": <抄送人数组>两个字段,搭配分享扩展使用时可以直接预填收件人、抄送字段,这两个参数为Outlook分享扩展长期稳定支持的未公开参数,近3年的版本均未发生变更。
MHT文件实现方案
你提到的MHT方案完全可行,兼容性比上述组合方案更强,不受Outlook版本迭代影响:
你可以按照RFC 822邮件格式规范生成MHT文件,将所有发信字段全部内嵌到文件中:
- 头部添加
To:字段填写收件人,多个地址用英文逗号分隔- 头部添加
Cc:字段填写抄送人- 头部添加
Subject:字段填写主题- 正文和所有附件按照MIME多部分格式内嵌到MHT文件内
生成MHT文件后,通过UIDocumentInteractionController指定用Outlook打开该文件,Outlook会自动识别为新的发信草稿,所有字段、附件都会自动填充,不需要额外配置,完美适配Exchange账号场景,不需要任何O365相关权限。
内容的提问来源于stack exchange,提问作者Hiromi Mita
相关产品推荐
相关产品推荐

