如何使用电子邮件正文附加 NSMutableArray 数据?

Posted

技术标签:

【中文标题】如何使用电子邮件正文附加 NSMutableArray 数据?【英文标题】:How can I Attached NSMutableArray Data With E-mail Body? 【发布时间】:2012-05-04 18:24:25 【问题描述】:

我正在尝试将 NSMutableArray 数据附加到电子邮件正文。这是我的 NSMutableArray 代码:

NSUserDefaults *defaults1 = [NSUserDefaults standardUserDefaults];
    NSString *msg1 = [defaults1 objectForKey:@"key5"];
    NSData *colorData = [defaults1 objectForKey:@"key6"];
    UIColor *color = [NSKeyedUnarchiver unarchiveObjectWithData:colorData];
    NSData *colorData1 = [defaults1 objectForKey:@"key7"];
    UIColor *color1 = [NSKeyedUnarchiver unarchiveObjectWithData:colorData1];
    NSData *colorData2 = [defaults1 objectForKey:@"key8"];
    UIFont *color2 = [NSKeyedUnarchiver unarchiveObjectWithData:colorData2];
    CGFloat x =(arc4random()%100)+100;
    CGFloat y =(arc4random()%100)+250;  
    lbl = [[UILabel alloc] initWithFrame:CGRectMake(x, y, 100, 70)];
    lbl.userInteractionEnabled=YES;
    lbl.text=msg1;
    lbl.backgroundColor=color;
    lbl.textColor=color1;
    lbl.font =color2;
    lbl.lineBreakMode = UILineBreakModeWordWrap;
    lbl.numberOfLines = 50;
    [self.view addSubview:lbl];
    [viewArray addObject:lbl ];

现在,如果我的 viewArray 包含 3 个 UILabel 以及上面提到的所有这些属性。那么如何将这个 viewArray 附加到电子邮件正文中。这是我的电子邮件代码。

   - (IBAction)sendEmail
  

  if ([MFMailComposeViewController canSendMail])
  
     NSArray *recipients = [NSArray arrayWithObject:@"example@yahoo.com"];
     MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] 
          init];
    controller.mailComposeDelegate = self;
    [controller setSubject:@"Iphone Game"];

    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:viewArray];
   [controller addAttachmentData:data mimeType:@"application/octet-stream";  
    fileName:nil]; 

     NSString *emailBody = @"Happy Valentine Day!";
    [controller setMessageBody:emailBody ishtml:NO
    [controller setToRecipients:recipients];
    [self presentModalViewController:controller animated:YES];
    [controller release];


else 

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert"
                                                    message:@"Your device is not set up for email." 
                                                   delegate:self 
                                          cancelButtonTitle:@"OK" 
                                          otherButtonTitles: nil];

    [alert show];

    [alert release];



我没有收到错误。但没有看到电子邮件正文中的任何数据。在 viewArray 中。请任何人指导我如何将我的 viewArray 数据附加到电子邮件中。

【问题讨论】:

【参考方案1】:

发送前检查 NSData 是否为 nil。

即;

[controller setSubject:@"Iphone Game"];

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:viewArray];

if(!data)
    NSLog(@"Data is nil");

    return;

[controller addAttachmentData:data mimeType:@"application/octet-stream";  
fileName:nil]; 

【讨论】:

感谢您的回复。 NSData 在我使用断点时显示字节。但我无法理解为什么我的 viewArray 数据没有显示在电子邮件中。请亲爱的指导我该怎么做。

以上是关于如何使用电子邮件正文附加 NSMutableArray 数据?的主要内容,如果未能解决你的问题,请参考以下文章

在电子邮件正文中显示附加图像

如何在电子邮件正文中添加图像

如何使用联系表格 7 在邮件正文中发送 HTML 内容?

在 Golang 中附加文件并通过 SMTP 发送时没有正文部分的电子邮件

使用 PHP 的邮件正文中的 MIME 信息

使用GAE python接收邮件,但是邮件正文中包含意外信息