【发布时间】:2015-12-30 08:29:01
【问题描述】:
我在发送电子邮件时尝试附加 docx 文件,但遇到了问题。这两行始终为零。变量文件名和扩展名不是零,但文件出现为零。不确定这是否重要,但 docx 文件是动态生成的,如果我要使用生成文件中的 NSData 而不是在这里创建新的 NSData 变量怎么办?
filepath = /Users/myself/components/file.docx
NSString *file = [[NSBundle mainBundle] pathForResource:filename ofType:extension];
NSData *fileData
= [NSData dataWithContentsOfFile:file];
这里是代码
-(void)sendEmail:(NSString*)filePath{
if ([MFMailComposeViewController canSendMail])
{
mailComposer = [[MFMailComposeViewController alloc]init];
mailComposer.mailComposeDelegate = self;
[mailComposer setToRecipients:@[@"name@gmail.com"]];
[mailComposer setSubject:@"Mobile File Attachment"];
[mailComposer setMessageBody:@"DocX file attached" isHTML:NO];
// Determine the file name and extension
if(![filePath isEqual:nil])
{
NSArray *filepart = [filePath componentsSeparatedByString:@"."];
NSString *filename = [filepart objectAtIndex:0];
NSString *extension = [filepart objectAtIndex:1];
// Get the resource path and read the file using NSData
NSString *file = [[NSBundle mainBundle] pathForResource:filename ofType:extension];
NSData *fileData = [NSData dataWithContentsOfFile:file];
// Determine the MIME type
NSString *mimeType;
if ([extension isEqualToString:@"jpg"]) {
mimeType = @"image/jpeg";
} else if ([extension isEqualToString:@"png"]) {
mimeType = @"image/png";
} else if ([extension isEqualToString:@"doc"]) {
mimeType = @"application/msword";
} else if ([extension isEqualToString:@"docx"]) {
mimeType = @"application/msword";
} else if ([extension isEqualToString:@"ppt"]) {
mimeType = @"application/vnd.ms-powerpoint";
} else if ([extension isEqualToString:@"html"]) {
mimeType = @"text/html";
} else if ([extension isEqualToString:@"pdf"]) {
mimeType = @"application/pdf";
}
// Add attachment
[mailComposer addAttachmentData:fileData mimeType:mimeType fileName:filename];
}
[[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:mailComposer animated:YES completion:nil];
}
编辑:添加 filePath 的值,这就是我生成文件的方式
NSAttributedString *str = [[NSAttributedString alloc] initWithAttributedString:_textV.attributedText];
//convert to html then write to a .docx file to export to docx
NSData *data = [str dataFromRange:(NSRange){0, [str length]} documentAttributes:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType} error:NULL];
[data writeToFile:@"/Users/myself/components/file.docx" atomically:YES];
【问题讨论】:
标签: ios objective-c nsdata mfmailcomposeviewcontroller mfmailcomposer