2011-08-26 74 views
1

我已经搜索到了很多,并且很惊讶没有像这样出现。 我试图发送一个音频文件电子邮件附件(使用MFMailComposeViewController)在文件名中有中文/汉字字符。奇怪的是,当我在文件名中使用特定的字符时,当我收到电子邮件时,它变成了一大串怪异的字符。MFMailComposeViewController带有外部字符的文件附件名称

有了“平成23年.m4a”这样的文件名,收到电子邮件时的附件名变成“平成23 ”/%1B%28B8%1B%24B7n%1B%28B25%1B %24 ...“这是造成这种情况的字符”年“,如果我删除了这个字符,一切都很好,可能会有另外一个中文/汉字字符可能导致同样的问题,但我不知道如何甚至开始解决这个问题...我一直在拉我的头发,所以希望有人可以帮我这个...

也有一个类似的问题是,与某些电子邮件提供商(工作正常的Gmail,雅虎,但不适用于gmboy.com之类的东西),如果我在文件名中包含日文字符,则它们将无法显示并被下划线符号替换(例如,Testテスト.m4a变成Test_.m4a)我觉得这可能与上面的问题有关。

这里是我的代码...

/* Set up the mail compose view and put in the body/attachment */ 
MFMailComposeViewController *mailComposer = [[[MFMailComposeViewController alloc] init] autorelease]; 

NSMutableDictionary *dict = [[self itemsToSend] objectAtIndex:0]; 
NSString *path = [dict objectForKey:@"exportFileAddress"]; 
NSData *myData = [NSData dataWithContentsOfFile:path]; 
NSString *fileName = @"平成23年.m4a"; 
[mailComposer addAttachmentData:myData mimeType:@"audio/m4a" fileName:fileName]; 


[mailComposer setMessageBody:@"Test email" isHTML:YES]; 

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

mailComposer.mailComposeDelegate = self;   
[self presentModalViewController:mailComposer animated:YES]; 

文件附件名称将显示就好了,当MFMailComposeViewController观点出现,但不知何故,在发送过程中,得到了名搞砸了。

任何帮助将非常感谢!

+0

看起来像我的一个iOS bug。 – Akshay

+0

哦,我没有注意到你的评论Akshay。感谢您的意见。就像我在下面说的,我刚刚尝试使用默认的iOS应用程序,并发生同样的问题。所以是的,这不仅仅是我错误地使用了API ... – kaka123

回答

0

如果在主题字段中输入相同的文件名文本(以编程方式或通过作曲者UI),会发生什么?

如果可行,您应该使用电子邮件程序查看该电子邮件的标题并查看单词是如何编码的。更好的是,从其他电子邮件程序发送附加文件和文件名的电子邮件,并调查它发送的电子邮件中的标题。

我最好的猜测是你需要使用rfc2047来编码你的字符串,它描述了如何将非ASCII字符嵌入到多部分电子邮件标题中。太糟糕了,这不是为你做的!

+0

Hey TomSwift谢谢你的回复!主题字段中的外部字符正常工作,但我遇到了一个它不显示的电子邮件提供商。所以这仍然是我猜测的同样的问题。 如何通过电子邮件程序检查单词是如何编码的? 谢谢我会检查链接! – kaka123

+0

我刚刚尝试使用默认的iOS语音备忘录程序来发送电子邮件语音备忘录。我将备忘录命名为发送完全相同的名称,并猜测是什么,同样的问题! 我试图从另一个电子邮件程序发送相同的文件名并显示正常,这就是为什么MFMailComposeViewController类本身而不是电子邮件提供程序的权利,这必须更多的问题? – kaka123

+0

您可以在Gmail中查看电子邮件的标题,例如,阅读邮件时选择“显示原文”。听起来没有任何iOS电子邮件客户端使用rfc2047编码附加文件(名称),所以最大的问题是您是否可以将预编码的文件名传递给MFMailComposeViewController。一个好的测试就是使用你的电子邮件程序发送你自己的这个文件,将编码的头文件复制/粘贴到你的NSString文件名中,然后发送。 – TomSwift

0

'audio/m4a'不是有效的mimeType。你在找'音频/ mp4'吗?

相关问题