我使用MFMailComposeViewController发送生成的报告(csv)。
现在邮件发送到收件人:电子邮件ID,&但当我检查邮件时,我确实收到了邮件但附件不在那里。
然后我也尝试了MailComposer示例:
https://developer.apple.com/iphone/library/samplecode/MailComposer/index.html
其中png图像附加到邮件演示。我也使用该应用程序发送邮件,但未提供相同的结果图像附件。
帮助,找出问题所在? 提前谢谢。
以下是该应用中的代码:
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate = self;
[picker setSubject:@"Hello from California!"];
// Set up recipients
NSArray *toRecipients = [NSArray arrayWithObject:@"first@example.com"];
NSArray *ccRecipients = [NSArray arrayWithObjects:@"second@example.com", @"third@example.com", nil];
NSArray *bccRecipients = [NSArray arrayWithObject:@"fourth@example.com"];
[picker setToRecipients:toRecipients];
[picker setCcRecipients:ccRecipients];
[picker setBccRecipients:bccRecipients];
// Attach an image to the email
NSString *path = [[NSBundle mainBundle] pathForResource:@"rainy" ofType:@"png"];
NSData *myData = [NSData dataWithContentsOfFile:path];
[picker addAttachmentData:myData mimeType:@"image/png" fileName:@"rainy"];
// Fill out the email body text
NSString *emailBody = @"It is raining in sunny California!";
[picker setMessageBody:emailBody isHTML:NO];
[self presentModalViewController:picker animated:YES];
[picker release];
答案 0 :(得分:3)
在我的情况下,电子邮件从我的iPhone发送得很好,但是从我妻子的iPhone发送时没有附件。事实证明她的默认帐户设置为她的雅虎帐户,并且不允许附件。我只是将其切换到她的移动我帐户并附件已经完成。我使用gmail所以我从来没有遇到过问题。
此外,我曾尝试将MIME类型从text / csv切换到text / plain,但没有帮助。它可以在我的iPhone上运行,而不是在我妻子身上。
希望这有帮助!
答案 1 :(得分:1)
我尝试将.csv文件附加到“text / plain”&我成功了。我想你应该尝试一样。祝你好运。
答案 2 :(得分:1)
我遇到了同样的问题,我解决了问题 我真的很难看到我写的两个函数:
一个定义.plist文件中的文件名,另一个实际设置 文件的位置(包括它的路径和文件名)。
使用正确的函数检索MFMailViewController中的文件名 解决了这个问题:
-(NSString *)dataFilePath { //this gets the ,plist file
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
return [documentsDirectory stringByAppendingPathComponent:kFilename];
// ----------------------------
-(NSString *)fileName { // this defines the fileName from the values in the .plist
NSString *patientDetails = [self dataFilePath];
NSArray *dataArray = [[NSArray alloc] initWithContentsOfFile:patientDetails];
NSString *firstName = [dataArray objectAtIndex:0];
NSString *lastName = [dataArray objectAtIndex:1];
NSString *fileName = [firstName stringByAppendingString:lastName];
return [fileName stringByAppendingString:@".csv"];
// -------------------------
-(NSString *)setFileLocation { //this puts name and folder together.
NSArray *sysPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docDirectory = [sysPaths objectAtIndex:0];
NSString *fileName = [self fileName];
NSString *fullFilePath = [NSString stringWithFormat:@"%@/%@", docDirectory,fileName];
// NSLog(@"Filepath is : %@",fullFilePath);
return fullFilePath;
}
// -------------------------
最后一个是你要在MFMailComposeViewController中调用的函数:
...
NSData *csvData = [NSData dataWithContentsOfFile:[self setFileLocation]];
[picker addAttachmentData:csvData mimeType:@"text/csv" fileName:fileName];
...
fileName当然是一个NSString,通过调用fileName函数来检索: NSString * fileName = [self fileName];
希望这有帮助!
答案 3 :(得分:0)
如果您的代码看起来不错,我会怀疑myData
没有加载数据nil
。添加NSLog([myData description])
或使用调试程序检查myData
是否为nil
。
答案 4 :(得分:0)
我没有想法。如果我遇到这种情况,我会用你提供的示例代码创建一个独立的项目,看看我是否可以使它工作。通常在这些情况下,您关注的代码可能是正确的,并且错误来自其他地方。
此外:
fileName
设置为rainy.png
,即[picker addAttachmentData:myData mimeType:@"image/png" fileName:@"rainy.png"]
。