7

我成功创建了一个 txt 文件(即文件存在并打开),我想将其附加到我成功生成的电子邮件中(即电子邮件打开,我可以将文本放入电子邮件等并发送)。这是我现在用于执行附件的代码:

// Attach a file to the email
NSString *path = [self dataFilePath:(@"myFile.txt")];
NSData *myData = [NSData dataWithContentsOfFile:path];
[picker addAttachmentData:myData mimeType:@"text/plain" fileName:@"myFile"];

dataFilePath 是我用来获取文件路径的一种方法,它工作正常,因为我经常使用它。上面的代码放了一个 < br/ > < br/ >,然后有来自文本文件的文本,还有几个 < br/ > < br/ > ..breaks 在那里......所以这实际上并没有附加文件将其粘贴到电子邮件文本中...我想附上文件。

我从 stackoverflow 上的其他帖子中复制/修改了这段代码,我很难在苹果网站上找到信息。注意:我不确定 txt 文件的 mimeType 是什么,因为他们的网站 (www.iana.org) 不表示 txt...???

更新:更改为更新的代码,感谢您确认“plain”是 mimeType 的正确选择。

4

2 回答 2

7

这不是一个完整的解决方案,但纯文本的 MIME 类型是:

文本/纯文本
于 2009-08-07T04:05:54.393 回答
3

这可能是您的电子邮件客户端的问题,而不是您的程序的问题。文本文件是否在邮件撰写视图中显示为附件,但是当您收到电子邮件时它在正文中?

当您收到电子邮件时,请尝试对其进行查看源代码(或查看原始内容,或您的电子邮件客户端所称的任何内容)。您应该在电子邮件中看到类似这样的内容:

--Apple-Mail-1-494911569
Content-Disposition: attachment;
    filename=myFile
Content-Type: text/plain;
    name=myFile
Content-Transfer-Encoding: 7bit

Text of the file here.

--Apple-Mail-1-494911569

如果您在电子邮件中看到,则说明文件已正确附加。您的电子邮件客户端可能忽略了 Content-Disposition MIME 标头。在 GMail 和 Apple 邮件中,像上面这样的电子邮件部分肯定会显示为附件。

值得一提的是,这里有一些完整的工作代码,用于创建电子邮件、添加 HTML 正文、添加文本附件并发送显示撰写视图:

NSData *textData = [[self getEmailAttachment] dataUsingEncoding:NSUTF8StringEncoding];
NSString *htmlData = [self getEmailBodyHTML];

/* Set up the mail compose view and put in the body/attachment */
MFMailComposeViewController *mailComposer = [[[MFMailComposeViewController alloc] init] autorelease];
[mailComposer setMessageBody:htmlData isHTML:NO];
[mailComposer addAttachmentData:textData mimeType:@"text/plain" fileName:@"tripometer_report.csv"];

/* Set default subject */
[mailComposer setSubject:@"Email subject"];

mailComposer.mailComposeDelegate = self;    
[self presentModalViewController:mailComposer animated:YES];
于 2009-12-06T18:09:18.580 回答