如何使用电子邮件正确添加附件,特别是IOS中的RTF?

时间:2018-01-08 02:48:27

标签: ios objective-c

我正在开发一个项目,该项目具有在UITextView中编辑数据的功能,然后以RTF文件格式通过电子邮件发送该UITextView中的文本。我得到了一切工作,甚至能够附加数据并通过电子邮件发送。当我尝试下载文件并在我的计算机上打开它时出现问题,它说“文档无法打开”。但是,当我使用Gmail预览时,我可以看到文本在文件中。

所以我想知道我的代码中是否有一个设置或选项来“完成”RTF文件?或者,如果有一种比我正在做的更正确的方式。这就是我正在做的事情:

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

[picker setSubject:@"EMAIL TEST"];

// Fill out the email body text
NSString *emailBody = @"Send RTF";
[picker setMessageBody:emailBody isHTML:NO];

NSData *dataString = [[myTextView text] dataUsingEncoding:NSUTF8StringEncoding];
[picker addAttachmentData:dataString mimeType:@"text/rtf" fileName:@"rtfFileName"];

[self presentViewController:picker animated:YES completion:NULL];

据我所知,我可以使用mimeType“text / plain”,它创建了一个文本文件,当我通过电子邮件发送给自己时,我可以打开该文件。但我希望有一个RTF文件。感谢您的回复!

1 个答案:

答案 0 :(得分:0)

您实际上没有任何RTF可以附加到电子邮件中。文本视图的text属性只是纯文本。

您需要将文本视图的attributedText转换为RTF。这可以按如下方式完成:

NSAttributedString *attrStr = myTextView.attributedText;
NSError *error = nil
NSData *data = [attrStr dataFromRange: NSMakeRange(location: 0, length: attrStr.length]) documentAttributes:@{ NSDocumentTypeDocumentAttribute: NSRTFTextDocumentType } error: &error];
if (data) {
    [picker addAttachmentData:data mimeType:@"text/rtf" fileName:@"rtfFileName"];
} else {
    NSLog(@"Error: %@", error);
}