MailMessage - Ошибка при открытии вложения

Я использую NPOI для создания книги Excel и пытаюсь отправить ее в виде вложения по электронной почте. Мой код выглядит следующим образом:

var wb = new HSSFWorkbook();

//create the workbook

using(var ms = new MemoryStream())
{
    wb.Write(ms);
    var msg = new MailMessage();

    //create email

    msg.Attachments.Add(new Attachment(ms, "Document.xls", "application/vnd.ms-excel"));

    client.Send(msg);
}

Я исключил код для создания книги, я проверил, чтобы убедиться, что он работает (я могу сохранить файл и открыть его без проблем), но если вы хотите что-то увидеть, пожалуйста, спросите. client это просто мой SmtpClient.

Электронное письмо отправляется без проблем, и вложение присутствует как Document.xls (как и ожидалось), однако, когда я его открываю, я получаю следующее сообщение (в Excel 2010), и когда я нажимаю «Да», чтобы открыть, рабочий лист пуст.

The file you are trying to open, 'Document.xls', is in a differrent format than specified by the file extension. Verify that the file is not corrupted and is from a trusted source before opening the file. Do you want to open the file now?

Насколько мне известно, я указываю формат. Кто-нибудь видит, что я делаю неправильно? Любая помощь будет оценена по достоинству.


person aw04    schedule 12.12.2013    source источник
comment
Вы пробовали Document.xlsx и application/octet-stream?   -  person Valin    schedule 12.12.2013


Ответы (1)


Я наконец-то понял. Прежде чем передать Stream в Attachment, мне нужно было установить его позицию обратно в ноль.

ms.Position = 0;

Вот и все!

person aw04    schedule 12.12.2013
comment
Простой. Удивительный. Спасибо. - person recursive_acronym; 13.07.2015