0

данные Мои NSMutableArray являются в NSData formate.I пытаюсь присоединенные данные NSMutableArray к электронной почте body.Here мой NSMutableArray код:NSMutableArray Data Attachment с E-mail Body?

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 мой NSMutableArray .Все хранилище данных в viewArray в NSData formate. Затем как можно привязать этот viewArray данные с E-mail body.here есть мой E-mail Code.

- (IBAction)sendEmail 
{ 

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

    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:viewArray]; 
    NSLog(@"testing: %@", data); 
    [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 в NSData это показать байты в console.but не показывать какие-либо данные по электронной почте body..which является in viewArray.please Any One подскажите мне, как можно связать мои данные viewArray с электронной почтой.

ответ

4

С MFMailComposeViewController reference для addAttachmentData:mimeType:fileName::

файла

Предпочтительное имя файла для связывания с данными. Это имя по умолчанию применяется к файлу, когда оно передается в пункт назначения. Любые символы разделителя пути (/) в имени файла преобразуются в символы подчеркивания (_) перед передачей. Этот параметр не должен быть равен нулю.

Похоже, вы должны указать правильное имя файла для отображения в теле письма. Только любая строка будет делать.

EDIT:

Я боюсь, что я не могу понять ваш комментарий ... как я уже сказал, я успешно отправлено письмо с кодом: что я получаю это PLIST файл, так что все работает так, как ожидалось. Это код, я использую:

NSUserDefaults *defaults1 = [NSUserDefaults standardUserDefaults]; 
NSString *msg1 = [defaults1 objectForKey:@"key5"]; 
UIColor *color = [UIColor grayColor]; 
UIColor *color1 = [UIColor grayColor]; 
UIFont *color2 = [UIFont systemFontOfSize:12]; 
CGFloat x =(arc4random()%100)+100; 
CGFloat y =(arc4random()%100)+250; 
UILabel* 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]; 
NSMutableArray* viewArray = [NSMutableArray arrayWithCapacity:1]; 
[viewArray addObject:lbl ]; 


if ([MFMailComposeViewController canSendMail]) { 
    MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init]; 
    mailer.mailComposeDelegate = self; 
    [mailer setSubject:@"Hello"]; 
    [mailer setToRecipients:[NSArray arrayWithObjects:@"[email protected]", nil]]; 
    NSString *emailBody = @""; 
    [mailer setMessageBody:emailBody isHTML:NO]; 

    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:viewArray]; 
    [mailer addAttachmentData:data mimeType:@"application/octet-stream" fileName:@"prova.plist"]; 

    [self presentModalViewController:mailer animated:YES]; 
    [mailer release]; 
} 

Как я пошел бы в вашем случае:

  1. забыть о прикрепленном на мгновение, и попытаться отправить вам простой текст Эл. адрес;

  2. , если это работает, добавьте 2 строки, которые посылают вложение тоже:

    NSData *data = [NSKeyedArchiver archivedDataWithRootObject:viewArray]; 
    [mailer addAttachmentData:data mimeType:@"application/octet-stream" fileName:@"prova.plist"]; 
    

В обоих случаях установить контрольную точку в вашем методе делегата - (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error и посмотреть, который выполняется ветвь:

- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error { 
switch (result) { 
     case MFMailComposeResultCancelled: 
     case MFMailComposeResultSaved: 
     case MFMailComposeResultSent: 
     case MFMailComposeResultFailed: 
     default: 
     break; 
    } 
[self dismissModalViewControllerAnimated:YES]; 
} 
+0

Thanx @ sergio.but еще я не видел данные массива в E-mail. – jamil

+0

Странно ... Я попробовал код с правильным именем файла, и, кроме того, что я сам инициализировал цвет/цвет1/цвет2 (потому что у меня нет настроек по умолчанию для пользователей), он работает, и я вижу файл вложения в (не массивные данные, файл вложений) ... что вы ожидаете увидеть? – sergio