Можно ли с помощью классов .NET сформировать письмо с аттачментом, не создавая при этом самого файла.
То есть, есть строки собственно письма, которые пользователь будеть видеть, читая на экране это письмо, а есть
строки, которые надо оформить в виде аттачмента, но не хотелось бы создавать файл только для того,
чтобы его послать и сразу же удалить. С помощью того что есть в System.Web.Mail этого не сделать, я правильно понял?
Здравствуйте, AGE, Вы писали:
AGE>Можно ли с помощью классов .NET сформировать письмо с аттачментом, не создавая при этом самого файла. AGE>То есть, есть строки собственно письма, которые пользователь будеть видеть, читая на экране это письмо, а есть AGE>строки, которые надо оформить в виде аттачмента, но не хотелось бы создавать файл только для того, AGE>чтобы его послать и сразу же удалить. С помощью того что есть в System.Web.Mail этого не сделать, я правильно понял?
не знаю, можно так или нет, но попробуй создать объект System.IO.File, не записывая его на диск и его приаттачить
Здравствуйте, AGE, Вы писали:
AGE>Можно ли с помощью классов .NET сформировать письмо с аттачментом, не создавая при этом самого файла. AGE>То есть, есть строки собственно письма, которые пользователь будеть видеть, читая на экране это письмо, а есть AGE>строки, которые надо оформить в виде аттачмента, но не хотелось бы создавать файл только для того, AGE>чтобы его послать и сразу же удалить. С помощью того что есть в System.Web.Mail этого не сделать, я правильно понял?
Здравствуйте, Воронков Василий, Вы писали:
ВВ>Здравствуйте, AGE, Вы писали:
AGE>>Можно ли с помощью классов .NET сформировать письмо с аттачментом, не создавая при этом самого файла. AGE>>То есть, есть строки собственно письма, которые пользователь будеть видеть, читая на экране это письмо, а есть AGE>>строки, которые надо оформить в виде аттачмента, но не хотелось бы создавать файл только для того, AGE>>чтобы его послать и сразу же удалить. С помощью того что есть в System.Web.Mail этого не сделать, я правильно понял?
ВВ>System.Web.MailMessage.Attachments
У меня .NET Framework 1.1.4322, но есть только namespace System.Web.Mail в
котором и определены MailMessage и MailAttachment, но как они могут решить мой
вопрос? у MailAttachment всего лишь одно свойство FileName (ну и ещё Encoding), куда можно выставить имя
существующего в файловой системе файла. Мне же хотелось проделать всё в RAM — создать сообщение с аттачментом, чтобы его затем отослать кому надо.
Здравствуйте, oRover, Вы писали:
R>Здравствуйте, AGE, Вы писали:
AGE>>Можно ли с помощью классов .NET сформировать письмо с аттачментом, не создавая при этом самого файла. AGE>>То есть, есть строки собственно письма, которые пользователь будеть видеть, читая на экране это письмо, а есть AGE>>строки, которые надо оформить в виде аттачмента, но не хотелось бы создавать файл только для того, AGE>>чтобы его послать и сразу же удалить. С помощью того что есть в System.Web.Mail этого не сделать, я правильно понял?
R>не знаю, можно так или нет, но попробуй создать объект System.IO.File, не записывая его на диск и его приаттачить
Не вижу каким образом я смогу использовать этот объект — в какой метод какого класса мне его нужно будет передать?
Классу MailAttachment из System.Web.Mail нужна только строка, содержащая путь к файлу в файловой системе. А мне же хотелось избежать лишних запросов к ней — вот только я думаю будет ли стоить овчинка выделки, если Microsoft не подумала снабнить классы из вышеупомянутого пространства имён более широким интерфейсом для создания почтовых сообщений, то может быть в этом есть какой-то глубокий смысл?
Здравствуйте, AGE, Вы писали:
AGE>Можно ли с помощью классов .NET сформировать письмо с аттачментом, не создавая при этом самого файла. AGE>То есть, есть строки собственно письма, которые пользователь будеть видеть, читая на экране это письмо, а есть AGE>строки, которые надо оформить в виде аттачмента, но не хотелось бы создавать файл только для того, AGE>чтобы его послать и сразу же удалить. С помощью того что есть в System.Web.Mail этого не сделать, я правильно понял?
Да, с помощью System.Web.Mail этого сделать нельзя.
System.Web.Mail использует CDO for NTS, объект NewMail, аттачменты добавляются методом AttachFile
, у которого первый параметр (Source ) может быть как IStream (по каким-то причинам MS не добавила его как содержимое аттачмента), так и путь к файлу, и именно первый параметр System.Web.Mail использует для передачи пути к файлу.
Так что если не хотите заморачиваться с созданием/удалением временных файлов, реализуйте IStream через Stream и используйте напрямую CDO (MAPI канешна покруче, но и посложней), или вытащите Reflector'ом реализацию SmtpMail и подстройте под свои нужды.