I don't know if it is intended behaviour but when fetching FetchPreference.bodystructure the field message.parts is null, while message.body?.parts is not.
final messages = await mailClient.fetchMessages(
mailbox: inbox,
count: 20,
fetchPreference: FetchPreference.bodystructure,
);
for (MimeMessage message in messages) {
print('AA ${message.body?.parts}'); // is not null
print('BB ${message.parts}'); // is null
}