Как еще можно отправить файл по электронной почте с помощью ASP.NET? - PullRequest
1 голос
/ 19 мая 2010

Я использую приведенный ниже код на странице ASP.NET для отправки файла по электронной почте с домашнего компьютера наших пользователей в почтовый ящик, который используется для получения работы, требующей фотокопирования. Приведенный ниже код работает нормально при отправке файла в нашей сети, но происходит сбой, когда наши пользователи находятся дома и подключены через SSL VPN, в нашей VPN существует ошибка, из-за которой файл временно не сохраняется на веб-сервер перед отправкой по электронной почте. Может кто-нибудь предложить какие-либо другие предложения о том, как прикрепить файл к странице ASP.NET и отправить файл по электронной почте, не сохраняя его на веб-сервере? Большое спасибо Джейн.

MailMessage mail = new MailMessage();
        mail.From = txtFrom.Text;
        mail.To = txtTo.Text;
        mail.Cc = txtFrom.Text;
        mail.Subject = txtSubject.Text;
        mail.Body = "test"
        mail.BodyFormat = MailFormat.Html;

        string strdir = "E:\\TEMPforReprographics\\"; //<-------PROBLEM AREA
        string strfilename = Path.GetFileName(txtFile.PostedFile.FileName);

        try
        {
            txtFile.PostedFile.SaveAs(strdir + strfilename);
            string strAttachment = strdir + strfilename;

            mail.Attachments.Add(new MailAttachment(strdir + strfilename));
            SmtpMail.SmtpServer = "172.16.0.88";
            SmtpMail.Send(mail);
            Response.Redirect("Thanks.aspx", true);
        }
        catch
        {
           Response.Write("An error has occured sending the email or uplocading the file.");
        }
        finally
        {

        }

Ответы [ 4 ]

2 голосов
/ 19 мая 2010

Если вы используете классы в пространстве имен System.Net.Mail, класс Attachment там поддерживает потоки, поэтому, предполагая, что вы можете сначала прочитать его в памяти как поток, вы можете затем добавить его во вложение, таким образом вы никогда не нужно хранить какие-либо файлы.

Больше информации (и образец) здесь:

http://msdn.microsoft.com/en-us/library/6sdktyws.aspx

1 голос
/ 19 мая 2010

Может кто-нибудь предложить какие-либо другие предложения о том, как прикрепить файл к странице ASP.NET и отправить файл по электронной почте, не сохраняя его на веб-сервере? Большое спасибо Джейн.

Это невозможно. Веб-сервер, на котором размещена страница ASPX, должен получить файл от клиента перед дальнейшей обработкой.

0 голосов
/ 20 мая 2010

С макушки головы создайте вложение вроде:

txtFile.PostedFile.InputStream.Position = 0  
mail.Attachments.Add(new MailAttachment(txtFile.PostedFile.InputStream, strfilename  ));

Это должно позволить вам создать вложение, не сохраняя его на диск.

0 голосов
/ 19 мая 2010

Используйте string strdir = Path.GetTempPath();?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...