Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在iOS mail中判断文件是否已发送或在发件箱中_Ios_Mfmailcomposeviewcontroller_Mfmailcomposer - Fatal编程技术网

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

如何在iOS mail中判断文件是否已发送或在发件箱中,ios,mfmailcomposeviewcontroller,mfmailcomposer,Ios,Mfmailcomposeviewcontroller,Mfmailcomposer,我正在开发一个iOS应用程序,它允许用户以csv文件的形式发送到存储(使用核心数据)和发回数据,我已使用MFMailComposeViewController类将该文件附加到电子邮件中 文件发送后,我希望遍历数据,并在每个记录上设置一个提交标志,以便在用户点击按钮提交更多数据时不再发送 这很容易做到——我可以从内部调用方法来做到这一点 -(void) mailComposeController:(MFMailComposeViewController *)controller didFi

我正在开发一个iOS应用程序,它允许用户以csv文件的形式发送到存储(使用核心数据)和发回数据,我已使用MFMailComposeViewController类将该文件附加到电子邮件中

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

这很容易做到——我可以从内部调用方法来做到这一点

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

    case MFMailComposeResultSent:
我想清理后,我自己也删除了csv文件后,它是发送,但我的问题是这。。。。(编辑-请参见底部的“更多测试后编辑”)

MFMailComposer结果是MFMailComposer结果,无论是邮件已发送,还是邮件已发送到发件箱且尚未发送。如果我在此时删除csv文件,并且internet连接关闭,邮件在发件箱中,那么当连接恢复并发送邮件时,附件已被删除,显然不会发送

我的csv文件的大小很小——一条记录的大小约为1kb,5条记录的大小约为2kb(这一差异是因为第一行是所有字段名),在此基础上,不太可能有任何文件的大小超过30kb,因此我不会占用大量内存。实际上,我看不到哪怕是最热心的用户也能生成超过半MB的数据

我可以/应该如何处理这个问题?我不确定苹果公司会如何处理一堆小文件,以及这会如何影响我的应用程序提交

提前感谢您抽出时间阅读和/或回复此内容

西蒙

编辑

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

我做了一系列的测试,附件都通过了——我一直在测试在关闭wifi和打开飞机模式的情况下发送,文件在我重新打开后不久就通过了。我只是测试了一下我把wifi路由留在哪里,我仍然保持连接,但从wifi路由器的后面拔出了电缆,所以后面没有互联网 当我回到路由器,把它插上电源,邮件就发送出去了,它已经丢失了附件文件,邮件也没有它们就发送出去了。现在我有一大堆测试,一半是附件通过的,一半是附件没有通过的

在更多测试后编辑

我的问题可能是由于我对当时发生的事情的误解而引起的,但我没有将问题标记为已回答,因为我仍然想知道是否有可能检查邮件是否已实际发出。一个提供的答案说不,这是不可能的-其他人能证实这一点,然后我将标记为答案

反正


我想我丢失附件的问题可能是因为邮件找不到连接时进入邮件应用程序并检查发件箱。有时邮件会在邮件上添加警告,附件有时会消失。如果我把发件箱放在一边,附件似乎会正常运行。我将对此进行更多测试,以确认实际情况。

不幸的是,无法检查

MFMailCompositeSultSent

The email message was queued in the user’s outbox. It is ready to send the next time the user connects to email.
表示当消息排队等待发送时(仍在发件箱中),将获得此结果,发送后不会生成任何结果


请查看详细信息。

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

有关更多详细信息,请参阅
MFMailComposeViewController addAttachmentData

e、 g


使用addAttachmentData将csvData附加到MFMailComposeViewController。

是-这就是我的问题-事实上更糟,因为即使连接良好,也很有可能在发送之前将其删除。所以MFMComposeResultSent完全不是我清理的地方是的-我一直在使用一个文件url-我给自己发送了一个.csv文件,这样我就可以把它加载到bento并查看其中的数据。如果附件文件被删除,你确定邮件不会从发件箱发送吗?如果您按照上述方式将NSData嵌入到电子邮件中,则不必再保留文件。电子邮件将被发送。问题是,当我重新打开wifi时,附件有时会消失,有时不会——我已经更改了代码以使用您的建议,但这似乎没有多大区别\code\NSData*siteCSVData=[NSData datawithcontentsofile:sitesFile];[mailer addAttachmentData:siteCSVData mimeType:@“text/csv”文件名:@“testSites.csv”]//[mailer addAttachmentData:[NSData DATA WITH CONTENTSOFILE:SITES文件]mimeType:@“text/csv”文件名:@“demoSites.csv”];有时候,我的带有附件的电子邮件只是卡在发件箱里,无法发送。有这方面的经验吗?
NSData *csvData = [NSData dataWithContentsOfFile:filePath];