Click or drag to resize
MimeKit

IMimeContentDecodeToAsync Method

Asynchronously decode the content stream into another stream.

Namespace: MimeKit
Assembly: MimeKit (in MimeKit.dll) Version: 4.7.1
Syntax
C#
Task DecodeToAsync(
	Stream stream,
	CancellationToken cancellationToken = default
)

Parameters

stream  Stream
The output stream.
cancellationToken  CancellationToken  (Optional)
The cancellation token.

Return Value

Task
An awaitable task.
Exceptions
ExceptionCondition
ArgumentNullExceptionstream is null.
OperationCanceledException The operation was cancelled via the cancellation token.
IOException An I/O error occurred.
Remarks
If the content stream is encoded, this method will decode it into the output stream using a suitable decoder based on the Encoding property, otherwise the stream will be copied into the output stream as-is.
Example
C#
foreach (var attachment in message.Attachments) {
    if (attachment is MessagePart) {
        var fileName = attachment.ContentDisposition?.FileName;
        var rfc822 = (MessagePart) attachment;

        if (string.IsNullOrEmpty (fileName))
            fileName = "attached-message.eml";

        using (var stream = File.Create (fileName))
            rfc822.Message.WriteTo (stream);
    } else {
        var part = (MimePart) attachment;
        var fileName = part.FileName;

        using (var stream = File.Create (fileName))
            part.Content.DecodeTo (stream);
    }
}
See Also