Метод Load(Stream stream, bool persistent, CancellationToken cancellationToken)
позволит избежать загрузки содержимого каждого сообщения в ОЗУ , если поток не доступен для поиска.
NetworkStream
не доступен для поиска.
Если вы собираетесь загружать сообщения размером 2 ГБ, вам необходимо скопировать содержимое из NetworkStream
в FileStream
и , затем загрузить сообщение, используя persistent: true
.
В MimeKit аргумент persistent
сообщает MimeParser
, что поток продолжит существовать и будет доступен для чтения после того, как анализатор завершит синтаксический анализ сообщения. Когда MimeParser
сообщается об этом, вместо загрузки содержимого сообщения в память, он вместо этого отслеживает смещения потока и создает прокси-объект Stream
, который можно использовать для чтения содержимого между начальным и конечным потоком. смещает исходный поток в более поздний момент времени и устанавливает , что на MimeMessage
, а не MemoryStream
.