【问题标题】:Can I send UIDocuments by email, as an attachment?我可以通过电子邮件将 UIDocuments 作为附件发送吗?
【发布时间】:2013-06-25 20:27:22
【问题描述】:

我正在使用 Xcode。

在我的应用中,我将一些 UIdocuments 保存在该位置

[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask];

我正在寻找一种共享文档的方式,我的第一个选择是通过电子邮件。

我可以通过电子邮件将这些文件作为附件发送吗?我可以用另一台装有相同应用的设备打开吗?

【问题讨论】:

  • 你试过我的代码了吗?干杯。
  • 抛出该错误...架构 armv7 的未定义符号:“_OBJC_CLASS_$_MFMailComposeViewController”,引用自:DropsViewController.o ld 中的 objc-class-ref:未找到架构 armv7 clang 的符号: 错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
  • 您需要为此导入框架。它被称为 MessageUI.framework。按照本教程中的步骤 3 进行操作。 mobile.tutsplus.com/tutorials/iphone/…
  • 我解决了问题 :)... 我使用 dataWithContentsOfFile 获取 NSData 以添加附件NSData *myData = [NSData dataWithContentsOfFile: path options: 0 error: &error]; 现在它抛出错误“无法完成操作。权限被拒绝”。文件位于 NSFilePath=/private/var/mobile/Applications/E296F71E-25FF-4B9E-A9FF-9E6D74D7D63A/Documents/File.drp 。我怎样才能给予许可?我可以在哪里移动文件?
  • 什么时候收到错误消息?

标签: ios objective-c email attachment uidocument


【解决方案1】:

你可以这样做。

创建一个MFMailComposeViewController 并使用- (void)addAttachmentData:(NSData*)attachment mimeType:(NSString*)mimeType fileName:(NSString*)filename 方法添加您的附件。

例如。

MFMailComposeViewController *mailVC = [[MFMailComposeViewController alloc] init];
[mailVC setSubject:@"Shared documents"];
[mailVC setToRecipients:@[@"sample@example.com"]];
[mailVC setMessageBody:@"Here the docs I want to share" isHTML:NO];
[mailComposer addAttachmentData:pdfData mimeType:@"application/pdf" fileName:@"file.pdf"];

[mailVC setMailComposeDelegate:self];

[self presentViewController:mailVC animated:YES completion:nil];

其中pdfData 的类型为NSData。因此,您需要将文档转换为NSData。

来自 Apple 文档。

addAttachmentData:mimeType:fileName:

此方法在消息体之后附加指定的数据,但是 在用户签名之前。您可以附加多个文件(使用 不同的文件名),但必须在显示邮件之前这样做 合成界面。提交后不要调用此方法 用户界面。

关于您问题的第二部分。你能解释一下你需要展示什么类型的文件吗?

同时,看看Adding "Open In..." option to iOS app。

【讨论】:

  • 我是 UIDocument 的子类,具有特定的扩展名。我的想法是通过邮件将其发送到具有该应用程序的其他设备并打开它。我可以使用“打开方式”打开任何扩展程序,如@“drp”吗?
  • 我对某些东西感到困惑,可能是愚蠢的,mailComposer 是什么?
  • @user2441567 用于发送电子邮件。
【解决方案2】:

要发送任何附件,您需要将内容放入NSData 对象中。如果文档在磁盘上,那么这很简单。您只需要文档的路径或文件 URL。然后您可以使用路径或 URL 创建NSData 对象。

如果电子邮件的收件人有相同的应用程序,并且该应用程序设置为出现在此类文档的“打开方式”菜单中,则用户可以从附件中打开该应用程序。然后,您的应用程序只需要知道在被要求打开这种类型的文件时要做什么。这里有大量关于 SO 的现有文档和问题,描述了如何注册应用程序以打开某些文件类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-17
    • 2011-09-23
    • 2020-05-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多