Форма бритвы - загрузить и прикрепить к электронной почте - PullRequest
1 голос
/ 09 сентября 2011

Я внедряю бритвенную контактную форму в Umbraco CMS, которая включает встроенный скрипт C # для создания и отправки электронной почты с использованием .Net MailMessage. Теперь конечный пользователь должен иметь возможность загрузить файл, который добавляется в электронное письмо в виде вложения.

Насколько мне известно, единственный способ сделать это - загрузить файл на диск и затем загрузить вложение с диска.

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

Ответы [ 2 ]

2 голосов
/ 10 сентября 2011

Вам необходимо передать InputStream из загруженного файла в конструктор MailMessage Attachment:

if(IsPost && Request.Files.Count > 0){
    var file = Request.Files[0];
    var fileName = file.FileName;
    var attachment = new Attachment(file.InputStream, fileName);       
    ...
    ...

Убедитесь, что (если вы не используете FileUpload Helper) вы устанавливаете метод формы наPOST, добавьте атрибут enctype со значением multipart/form-data и укажите свой input type=file с атрибутом name.

0 голосов
/ 09 сентября 2011

Я не уверен, сколько можно с бритвой, но должна быть возможность загружать и прикреплять к письму без сохранения на диск.Используйте поток, получаемый из свойства FileUpload.FileContent элемента управления загрузкой.Затем передайте это этому конструктору вложения MailMessage.

Кроме того, почему бы не использовать code-behind?

...