如何判断一个文件是否已发送或位于iOS邮箱中的发件箱

问题描述:

我正在开发一个iOS应用程序,该应用程序允许用户发送以存储(使用核心数据)并以数据形式发回数据使用MFMailComposeViewController类附加到电子邮件的csv文件。如何判断一个文件是否已发送或位于iOS邮箱中的发件箱

文件被发送我想通过数据进行迭代,并且当用户点击该按钮提交更多的数据

这是很容易做到每个记录,以便其不再次发送设置提交后旗 - 我可以调用方法来做到这一点从使用中

-(void) mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error{ 

case MFMailComposeResultSent: 

我想以后自己清理,并同时删除CSV文件发出后,但我的公关这是...(编辑 - 参见后面的更多测试编辑)

MFMailComposeResultsSent是MFMailComposeResult,它既是邮件发送也是它发送到发件箱并且没有发送。如果我在此时删除了csv文件,并且互联网连接已关闭,并且邮件位于发件箱中,则当连接备份并发送邮件时,附件已被删除,显然不会发送。

我的csv文件的大小很小 - 大约1kb的单个记录,大约2kb的5个记录(由于第一行是所有字段名称,所以区别不大),并且在此基础上,不可能有任何文件将永远比30kb大,所以我不会使用大量的内存。实际上,我不能看到任何情况下,即使是最热衷的用户生成超过半个MB的数据

任何想法我怎么可以/应该这样做?我不知道苹果会留下一堆小文件,以及这会如何影响我的应用程序提交。

提前感谢您抽出时间来阅读和/或在本

西蒙

编辑

似乎有一些问题存在时间延迟回应 - 也许iOS的是缓存中删除文件?很短的时间。

我有一堆测试运行,其中的附件通过 - 我一直在测试发送与WiFi关闭和飞行模式,并通过一段时间后,当我打开他们的文件了。我只是测试了我在哪里离开了无线路由,并且我仍然连接,但是从无线路由器的后面拉了电缆,所以我没有后面的网络 当我回到路由器并插上它,邮件去了,它已经丢失了附件文件,没有它们的邮件就通过了。现在,我有一大堆的测试,其中一半附件经历了一半,他们没有

编辑时,更多的测试

我的问题可能是由我发生了什么事时的误解刺激 - 但我避风港我没有把问题标记为答案,因为我仍然想知道是否有可能检查邮件实际上已经消失了。一个提供的答案说不,不可能 - 任何人都可以证实这一点,然后我将其标记为答案。

反正

我觉得我与失去附件问题可能来自进入邮件应用程序,并检查发件箱,而邮件是无法找到一个连接。有时邮件会在邮件上添加警告一方,有时附件会消失。如果我单独离开发件箱,那么附件似乎就应该如此。我会对此进行更多的测试以确认实际情况。

+0

有时候我的附件邮件只是卡在发件箱中而没有发送。任何这方面的经验? – elsurudo 2016-08-09 15:57:34

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

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

+0

是的 - 其中的问题在于我的问题 - 事实上它更糟糕,因为即使连接良好,它们在发送之前也会被删除。所以MFMComposeResultSent将完全是错误的地方做我的清理 – SimonTheDiver 2013-03-08 09:58:34

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

查看MFMailComposeViewController addAttachmentData了解更多详情。

例如

NSData *csvData = [NSData dataWithContentsOfFile:filePath]; 

使用addAttachmentData将csvData附加到您的MFMailComposeViewController。

+0

是的 - 我一直在使用一个文件的URL - 我给自己发送一个.csv文件,所以我可以将它加载到便当,看看那里的数据 – SimonTheDiver 2013-03-08 10:00:09

+0

你确定如果附件文件已被删除,电子邮件没有从发件箱发送出去?如果您将NSData嵌入到上述电子邮件中,则不需要再保留文件。 – melsam 2013-03-08 10:02:48

+1

发送电子邮件。问题是有时附件去,有时他们不会当我打开无线网络 - 我已经改变了代码来使用你的建议,它似乎没有太大的区别\ code \ NSData * siteCSVData = [NSData dataWithContentsOfFile:sitesFile]; [mailer addAttachmentData:siteCSVData mimeType:@“text/csv”fileName:@“testSites.csv”]; // [mailer addAttachmentData:[NSData dataWithContentsOfFile:sitesFile] mimeType:@“text/csv”fileName:@“demoSites.csv”]; – SimonTheDiver 2013-03-08 12:50:57