从UIPasteBoard一个电子名片粘贴到邮件

问题描述:

我一个虚拟卡(包含在包)复制到普通纸板如下:从UIPasteBoard一个电子名片粘贴到邮件

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"AM" ofType:@"vcf"]; 
NSData *data = [NSData dataWithContentsOfFile:filePath]; 
[[UIPasteboard generalPasteboard] setData:data forPasteboardType:(NSString*)kUTTypeVCard]; 

然后,我会喜欢的用户能够将其粘贴到电子邮件中。但是,Mail在复制到粘贴板时不提供粘贴选项。我做错了什么或邮件不能识别该纸板类型?

您只需直接将它添加到消息,像这样

MFMailComposeViewController *mailViewController = [[MFMailComposeViewController alloc] init]; 
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"AM ofType:@"vcf"]; 
NSData *data = [NSData dataWithContentsOfFile:filePath]; 
[mailViewController addAttachmentData:data mimeType:@"text/vcard" fileName:@"AM.vcf"]; 
mailViewController.mailComposeDelegate = self; 
[self presentModalViewController:mailViewController animated:YES]; 
[mailViewController release]; 
+0

谢谢,但你所回答,这不是问了一个问题。此外,您在答案中指定了错误的MIME类型 - 它应该是文本/电子名片 – RunLoop 2012-02-03 06:09:47

+0

抱歉,我误解了您的问题。我以为你想把它复制到他们的剪贴板上,然后让它们粘贴到一个MFMailComposeViewController中,我编辑了MIME。 – shabbirv 2012-02-03 07:34:54

代码中的一切看起来是正确的,因此,如果邮件不会允许您将其粘贴,这意味着邮件不支持粘贴该类型。

编辑:用NSDictionary的尝试:

UIPasteboard *gpBoard = [UIPasteboard generalPasteboard]; 

NSData *data = [NSData dataWithContentsOfFile:filePath]; 

NSDictionary *item = [NSDictionary dictionaryWithObjectsAndKeys: 
         data, (NSString *)kUTTypeVCard, 
         nil]; 

gpBoard.items = [NSArray arrayWithObjects:item, nil]; 
+0

我发现当我将vCard复制到另一封电子邮件中并将其粘贴到新邮件中时,确实可以在邮件中粘贴一个vcard。因此,问题不是如果,而是如何。 – RunLoop 2012-02-06 16:47:21

+0

请参阅编辑。你可能想尝试添加代码来粘贴工作的vcard,以便检查它。 – 2012-02-06 17:59:55

+0

也不起作用 – RunLoop 2012-02-06 18:06:57