2012-07-13 72 views
0

我试图从Mail.app通过脚本桥检索附件。我正在使用以下代码来访问我的收件箱邮件。通过ScriptingBridge从Mail.app保存附件(目标C)

MailApplication *mailApp = [SBApplication applicationWithBundleIdentifier:@"com.apple.mail"]; 
MailMailbox *inbox = [mailApp inbox]; 
SBElementArray *messages = [inbox messages]; 

通过循环SBElementArray,我可以访问单个MailMessage对象。

每个MailMessage对象都有一个获取器,该对象获取另一个SBElementArray,这次填充了MailMailAttachment对象。

它的工作,因为如果我把一个NSLog(@"count:%lu",mailitem.attachments.count);它会打印正确数量的附件。文件名称和大小也正确打印。

但是,当我迭代附件数组并保存它时,什么都不会发生。

NSURL *url = [[NSURL new] initFileURLWithPath:@"/Users/usr/Documents/tmp/"]; 
NSLog(@"count:%lu",mailitem.attachments.count); 
for (MailMailAttachment *attachment in mailitem.attachments) { 
    NSLog(@"name:%@",attachment.name); 
    NSLog(@"size:%ld",attachment.fileSize); 
    [attachment saveIn:url as:MailSaveableFileFormatNativeFormat]; 
} 

我没有找到任何有关此方法的文档。从头文件,它说:

- (void) saveIn:(NSURL *)in_ as:(MailSaveableFileFormat)as; // Save a document. 

我假设的NSURL是,我想存储文件的地方,但我不知道有关MailSaveableFileFormat。我通过了MailSaveableFileFormatNativeFormat,这是我在头文件中找到的,但正如我所说的,没有任何反应。甚至没有一个简单的错误消息。

我也尝试用目录和完整的文件路径(路径+文件名)初始化NSURL。同样的结果。

有没有人有一个例子?我如何保存它?

TIA,

鲍勃

回答

1

我设法解决了这个问题。我正在初始化NSURL错误...工作的代码是:

for (MailMailAttachment *attachment in mailitem.attachments) { 
    NSString *filePath = [NSString stringWithFormat:@"%@%@",@"/Users/usr/Documents/tmp/",attachment.name]; 
    NSURL *fileUrl = [NSURL fileURLWithPath:filePath]; 
    [attachment saveIn:fileUrl as:MailSaveableFileFormatNativeFormat]; 
} 
0

在我的旧系统,我用这样[attachment saveIn:file_Path as:nil];

文件路径和nil在我的 “Mail.h”:saveIn:(NSString *)in_ as:(NSString *)as;

我知道这改变了狮子NSURL,而不是的NSString),但不是在AppleScript脚本,你必须在没有受到任何其他参数中指定文件路径 - >save thisAttachment in filePath -- Applescript

所以我觉得完全文件路径+为:无应该工作。

+0

谢谢,但没有奏效。我发现我正在初始化NSURL错误...顺便说一句,在我的Mail.h中,它有MailSaveableFileFormatNativeFormat ='item'/ *原始格式* / – 2012-07-14 14:48:58