Возврат сообщения MimeKit в виде файла в браузер

Я пытаюсь вернуть файл eml через браузер пользователю. Дело в том, что статического eml-файла нет — страница его строит. Я могу создать образец сообщения в MimeKit, используя следующий метод

public FileResult TestServe()
{
    var message = new MimeMessage();
    message.From.Add(new MailboxAddress("Joey", "[email protected]"));
    message.To.Add(new MailboxAddress("Alice", "[email protected]"));
    message.Subject = "How you doin?";

    message.Body = new TextPart("plain")
    {
        Text = @"Hey Alice,

        What are you up to this weekend? Monica is throwing one of her parties on
        Saturday and I was hoping you could make it.

        Will you be my +1?

        -- Joey
        "
    };

    MemoryStream stream = new MemoryStream();
    IFormatter formatter = new BinaryFormatter();
    formatter.Serialize(stream, message);

    return File(stream, "message/rfc822");
}

Но когда я запускаю его, я получаю эту ошибку

Type 'MimeKit.MimeMessage' in Assembly 'MimeKit, Version=0.27.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable.

Есть ли способ обойти это? Я могу записать eml во временную папку, но, очевидно, это снижает производительность, поэтому я бы не хотел. Любые идеи?


person roryok    schedule 03.12.2014    source источник
comment
Пробовали ли вы использовать WriteTo и передать новый поток памяти?   -  person Jan    schedule 16.12.2014


Ответы (1)


Как было предложено в комментариях, вы можете использовать метод WriteTo:

var stream = new MemoryStream();
message.WriteTo(stream);
stream.Position = 0;

return File(stream, "message/rfc822");
person Vsevolod Goloviznin    schedule 18.12.2014