Skip to content

MaxMimeDepth=1 doesn't set HtmlBody and TextBody #1006

Closed
@firat-plutoflume

Description

Describe the bug
We are trying to minimize our cpu and memory usage by only extracting first level of attachments/emails under an email. MaxMimeDepth option seems to designed for this, but when I pass new ParserOptions() { MaxMimeDepth = 1 } to MimeMessage.Load() it doesn't set HtmlBody and TextBody fields (although I can see them under BodyParts collection)

I believe the reason is we get MimePart instead of a TextPart here when depth=MaxMimeDepth, then it fails check in one of these places (just guessing):

Note: I'm not 100% sure if this is intentional or a 'bug', if not could you please guide how to extract only first level of attachments and have the body fields?

Platform (please complete the following information):

  • OS: Linux
  • .NET Framework: .Net Standard v2.0
  • MimeKit Version: 4.1.0

To Reproduce
Steps to reproduce the behavior:

  1. Call MimeMessage.Load(new ParserOptions() { MaxMimeDepth = 1 }, stream)
  2. Verify there are body parts with text/html and text/plain types
  3. Verify MimeMessage.TextBody and MimeMessage.HtmlBody are null

Expected behavior
I expect MimeMessage.TextBody and MimeMessage.HtmlBody to be not null when there are body parts with text/html and text/plain types

Code Snippets
If applicable, add code snippets to help explain your problem.

using (var stream = new MemoryStream(mimeBytes))
{
    var res = MimeMessage.Load(new ParserOptions() { MaxMimeDepth = 1 }, stream);
    Console.WriteLine(res.TextBody);
}

Additional context
Add any other context about the problem here.

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions