0

scriptingbridgeを介してMail.appから添付ファイルを取得しようとしています。次のコードを使用して、受信トレイのメッセージにアクセスしています。

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);それは正しい量の添付ファイルを印刷するので、それは働いています。ファイル名とサイズも正しく印刷されています。

しかし、attachments配列を繰り返し処理して保存しても、何も起こりません。

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、

ボブ

4

2 に答える 2

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];
}
于 2012-07-14T14:47:45.320 に答える
0

私の古いシステムでは、ファイルパスとnilを次のように使用します[attachment saveIn:file_Path as:nil];

私の「Mail.h」では:saveIn:(NSString *)in_ as:(NSString *)as;

NSStringではなくLionNSURLで変更されたことは知っていますが、AppleScriptスクリプトでは変更されていないため、他のパラメータを使用せずにファイルパスを指定する必要があります->save thisAttachment in filePath -- Applescript

したがって、完全なファイルパス+ as:nilが機能するはずです。

于 2012-07-13T21:11:16.310 に答える