powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Пропадает расширение в System.Net.Mail.MailMessage.Attachments
6 сообщений из 6, страница 1 из 1
Пропадает расширение в System.Net.Mail.MailMessage.Attachments
    #38443367
WitC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем!
Пользую FrameWork 3.5
Формирую письмо с вложением и отсылаю через System.Net.Mail.SmtpClient
формирую вложение (файл Excel в архиве).
создаю архив так
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
            FileStream sourceFile = File.OpenRead(path);
            FileStream destinationFile = File.Create(path + ".rar");

            byte[] buffer = new byte[sourceFile.Length];
            sourceFile.Read(buffer, 0, buffer.Length);

            using (System.IO.Compression.GZipStream output = new System.IO.Compression.GZipStream(destinationFile, System.IO.Compression.CompressionMode.Compress))
            {
                output.Write(buffer, 0, buffer.Length);
            }
            sourceFile.Close();
            destinationFile.Close();



добавляю вложения так:
Код: c#
1.
2.
3.
System.Net.Mail.MailMessage msgRecip = new System.Net.Mail.MailMessage();
...
msgRecip.Attachments.Add(new System.Net.Mail.Attachment(pathAttach, System.Net.Mime.MediaTypeNames.Application.Octet));



в результате - получаю письмо с вложением (архив RAR), но в архиве файл Excel потерял расширение...
т.е. файл назывался Excel.xlsx, а в пришедшем архиве его файл Excel xlsx (без точки между именем и расширением)...
хотя смотрю заархивированный файл, котрый добавляю в архив - там всё чётко:
...
Рейтинг: 0 / 0
Пропадает расширение в System.Net.Mail.MailMessage.Attachments
    #38443445
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WitC,

... так у вас оно все точки в имени файла заменяет на пробелы, как я понял? ... попробуйте поиграться с

Код: vbnet
1.
objAttachment.NameEncoding = System.Text.Encoding.GetEncoding(1251)



..ну, или другие кодировки ...
...
Рейтинг: 0 / 0
Пропадает расширение в System.Net.Mail.MailMessage.Attachments
    #38443685
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WitC, класс GZipStream умеет архивировать только один файл. Расширение файла не сохраняется т.к. формат gzip требует сохранять только имя файла. Более того, допускается ситуация когда имени может и не быть.

Раз у тебя .NET 3.5, то придется использовать внешние библиотеки - SharpZipLib или DotNetZip.

Если есть возможность перейти на .NET 4.5, то там появились классы ZipArchive и ZipFile умеющие создавать нормальные архивы.
...
Рейтинг: 0 / 0
Пропадает расширение в System.Net.Mail.MailMessage.Attachments
    #38443878
WitC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bazile,
да, архивирую GZip, т.к. не хотел пользовать сторонние библиотеки...
архивация только одного файла удовлетворяет требованиям...
на счёт имени - да, таким способом можно заархивировать любую последовательность байт...
хоть кусок текста из памяти.....

но!
когда я архивирую - файл сохраняет и название и расширение (скрин "До отправки"), я спокойно открываю его RAR-ом и смотрю в Экселе, без дополнительных телодвижений выбора программы для просмотра...

когда получаю в письме - архив сохраняет и имя, и расширение (.rar)...
но заархивированный файл теряет все точки (заметил carrotik) (скрин "После получения")

прихожу к выводу - проблема не в архивации, а в пересылке (добавления к аттачу)...
в свойствах System.Net.Mail.Attachment не нашёл, чего бы дёргнуть для исправления ситуации...

HELP!
...
Рейтинг: 0 / 0
Пропадает расширение в System.Net.Mail.MailMessage.Attachments
    #38443932
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://codearticles.ru/articles/1103 GZip не может хранить внутри архива имя файла. Следует не менять расширение на .zip, а добавлять к имени.
...
Рейтинг: 0 / 0
Пропадает расширение в System.Net.Mail.MailMessage.Attachments
    #38443933
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WitC,

.. ну, можно еще попробовать загружать Attachment не из файла напрямую, а прочитать файл в MemoryStream, а его уже в свою очередь подсунуть в Attachments.Add() ... Хотя, в принципе, должно быть одно и то же .... Кстати, вы источник полученного сообщения посмотреть можете, там вложение в base64? ....
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Пропадает расширение в System.Net.Mail.MailMessage.Attachments
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]