これにはいくつかの理由が考えられます。
1) CTCoreMessage に関する十分な情報をダウンロードしていない可能性があります。CTCoreMessages をダウンロードするリクエストを作成するときは、正しいフェッチ属性を指定して、必要な情報を指定する必要があります。
例えば:
[core_folder messagesFromSequenceNumber:from to:to withFetchAttributes: CTFetchAttrEnvelope | CTFetchAttrBodyStructure]
添付ファイルに関する情報を入力する必要があります。
IMAP からメッセージを取得する場合、コマンドは必要な情報を正確に指定します。
次のように MailCore Logging を有効にすると、何がフェッチされているかを確認できます。
MailcoreEnableLogging();
[core_folder messagesFromSequenceNumber:from to:to withFetchAttributes: CTFetchAttrEnvelope | CTFetchAttrBodyStructure];
MailcoreDisableLogging();
形式のコマンドが表示されます
<command number> <UID> <Command> (<requested structure>)
次のようなものが表示されると思います。
1 UID FETCH (ENVELOPE)
() 内に BODY または BODY[2] または RFC822 があることを確認する必要があります。これらには添付ファイルに関する情報が含まれるためです。
実際に何がフェッチされているかを確認したら、RFC を読むことができます。メールコアと IMAP を扱っている場合は、時間をかけて投資する価値があります。
2)これに失敗すると、おそらく CTCoreAccount および/または CTCoreFolder が接続されていないため、CTCoreMessage が有効な mailimapsession を持つことができず、添付情報をダウンロードできません。CTCoreMessage 内の属性が利用できない場合、libetpan は要求に応じてダウンロードする必要があります。そうでないという事実は、アカウントまたはフォルダーが有効でないか、接続されていない可能性があることを示唆しています。