电子邮件中附加的数据?
Posted
技术标签:
【中文标题】电子邮件中附加的数据?【英文标题】:Data Attached in E-mail? 【发布时间】:2012-05-07 14:03:35 【问题描述】:我的 NSMutableArray 数据采用 NSData 格式。我正在尝试将 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 是我的 NSMutableArray。viewArray 中的所有数据存储都在 NSData 格式中。我尝试将此代码附加到电子邮件中的 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"];
NSLog(@"viewArray: %@", viewArray);
NSString *string = [viewArray componentsJoinedByString:@"\n"];
NSString *emailBody = string;
NSLog(@"test=%@",emailBody);
[controller setMessageBody:emailBody ishtml:YES];
[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.in 控制台中,它看起来像这样..[2012-05-07 18:48:00.065 Note List[279:207] test=UILabel: 0x8250850;帧 = (140 341; 56 19);文本 = 'Xxxxxxx'; clipsToBounds = YES; layer = > 但在电子邮件中我只看到这个..>> 请建议任何人如何在电子邮件中附加我的 viewArray 数据。 ]
【问题讨论】:
【参考方案1】:在电子邮件附件中,您只能将 NSData 或字符串发送到电子邮件,现在如果您想通过字符串发送,则获取您要发送电子邮件的所有值,如 lable.text、lable.color、lable.alpha 等, 使用正确的键并将其放在正文中并在那里解析,否则找到某种方法将您的对象转换为 NSData 并使用 mfmailcomposer attach data 方法附加它
阅读本文将 NSArray 转换为 NSData
How to convert NSArray to NSData?
这会将 NSData 转换回 NSArray
How can i convert a NSData to NSArray?
然后将此数据写入文件,
-(void)writeDataToFile:(NSString*)filename
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
if(filename==nil)
DLog(@"FILE NAME IS NIL");
return;
// the path to write file
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat: @"%@",filename]];
/*NSData *writeData;
writeData=[NSKeyedArchiver archivedDataWithRootObject:pArray]; */
NSFileManager *fm=[NSFileManager defaultManager];
if(!filePath)
//DLog(@"File %@ doesn't exist, so we create it", filePath);
[fm createFileAtPath:filePath contents:self.mRespData attributes:nil];
else
//DLog(@"file exists");
[self.mRespData writeToFile:filePath atomically:YES];
NSMutableData *resData = [[NSMutableData alloc] init];
self.mRespData=resData;
[resData release];
最后使用
将其附加到电子邮件中- (void)addAttachmentData:(NSData *)attachment mimeType:(NSString *)mimeType fileName:(NSString *)filename
【讨论】:
不,它们不是 NSData 格式,如果是,它们不会显示为 [2012-05-07 18:48:00.065 Note List[279:207] test=UILabel: 0x8250850;帧 = (140 341; 56 19);文本 = 'Xxxxxxx'; clipsToBounds = YES; layer = > 在你的 nslog 中 亲爱的 writeDataToFile:(NSString*)filename 我无法理解这个的目的。它给我错误,因为我以前从未在我的应用程序中使用过。什么是实现它的正确方法。以上是关于电子邮件中附加的数据?的主要内容,如果未能解决你的问题,请参考以下文章
使用存储过程中的数据创建 Excel 文件,以将其附加到 Power Automate 中的电子邮件中
如何在从 python 触发的电子邮件中将 pandas 数据框附加为 excel
使用 PDO/MySQL 将自动增量编号附加到电子邮件中发送和发送电子邮件
如何使用电子邮件正文附加 NSMutableArray 数据?