如何判断文件是否已发送或是否在iOS邮件的发件箱中

时间:2013-03-08 09:35:12

标签: ios mfmailcomposeviewcontroller mfmailcomposer

我正在开发一个iOS应用程序,允许用户发送到商店(使用核心数据)并以csv文件的形式发回数据,我已使用MFMailComposeViewController类附加到电子邮件。

发送文件后,我想遍历数据并在每条记录上设置一个提交的标志,以便在用户点击按钮提交更多数据时不再发送该标志

这很容易做到 - 我可以在

中调用方法来做到这一点
    -(void) mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error{

使用

    case MFMailComposeResultSent:

我想在自己之后清理并在发送后删除csv文件,但我的问题是这个....(编辑 - 请参阅底部更多测试后的编辑)

MFMailComposeResultsSent是MFMailComposeResult,如果邮件已被发送,并且如果它已发送到发件箱但尚未消失。如果我此时删除了csv文件并且互联网连接已关闭且邮件在发件箱中,那么当连接备份并且邮件被发送时,附加的文件已被删除,显然不会被发送。

我的csv文件的大小很小 - 单个记录的重量约为1kb,5个大约2kb(差异是因为第一行是所有字段名称),在此基础上,任何文件都不太可能永远不会超过30kb,所以我不会使用大量的内存。实际上,我无法看到即使是最热情的用户也会产生超过半MB数据的情况

我有什么想法/应该接近这个?我不确定苹果会不会留下一堆小文件,以及这可能会影响我的应用提交。

提前感谢您花时间阅读和/或回复此

西蒙

编辑

时间延迟似乎存在一些问题 - 也许iOS正在缓存已删除的文件?很短的时间。

我有一堆测试运行,其中附件通过 - 我一直在测试发送wifi关闭和飞行模式打开,文件在我重新打开后很短的时间内完成。我只是测试了我离开wifi路线的地方,我仍然连接但从无线路由器的后面拉电缆,所以我没有互联网背后 当我回到路由器并将其插入并且邮件发送时,它丢失了附件文件,邮件没有它们。现在我有一堆测试,一半是附件经过的,另一半是他们没有的

更多测试后编辑

我的问题可能是由于我误解了发生的事情而引起的 - 但我没有将问题标记为已回答,因为我仍然想知道是否有可能检查邮件是否真的消失了。一个提供的答案说不,它不可能 - 任何其他人都可以确认这一点,然后我会将其标记为答案。

反正

我认为丢失附件的问题可能来自邮件应用程序并检查发件箱,而邮件无法找到连接。有时Mail会在邮件上添加警告,有时附件会消失。如果我单独离开发件箱,附件似乎应该按照他们的意愿行事。我将对此进行更多测试,以确认实际情况确实如此。

2 个答案:

答案 0 :(得分:1)

不幸的是,没有办法检查它。

  

<强> MFMailComposeResultSent

The email message was queued in the user’s outbox. It is ready to send the next time the user connects to email.

表示当邮件排队等待发送时(仍然在发件箱中),此结果将被获取,发送后不会生成任何结果。

MFMailComposeViewController了解详情。

答案 1 :(得分:1)

如何将CSV文件附加到电子邮件中?您可以尝试附加NSData,而不是指定文件URL。这样,您的附件不会绑定到外部文件,而是嵌入在电子邮件本身中。

查看MFMailComposeViewController addAttachmentData了解更多详情。

e.g。

NSData *csvData = [NSData dataWithContentsOfFile:filePath];

使用addAttachmentData将csvData附加到MFMailComposeViewController。