powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / оптравка файлов по почте
25 сообщений из 40, страница 1 из 2
оптравка файлов по почте
    #38389387
Гость198448
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не очень большой опыт. Для реализации почты с мультиселекторным upload (условие заказчика) решил воспользоваться примером http://www.aspsnippets.com/Articles/Upload-and-attach-multiple-files-as-attachments-to-email-in-ASPNet.aspx
Вроде получилось, но не удается передать gif и jpg
Код я понял-записываем файлы в список
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
<%@ WebHandler Language="C#" Class="UploadCS" %>
using System;
using System.Web;
using System.IO;
using System.Web.SessionState;
using System.Collections.Generic;
public class UploadCS : IHttpHandler, IRequiresSessionState {
    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/plain";
        context.Response.Expires = -1;
        try
        {
            List<HttpPostedFile> files = (List<HttpPostedFile>)context.Session["Files"];
            HttpPostedFile postedFile = context.Request.Files["Filedata"];
            files.Add(postedFile);
            string filename = postedFile.FileName;
            context.Response.Write(filename);
            context.Response.StatusCode = 200;
        }
        catch (Exception ex)
        {
            context.Response.Write("Error: " + ex.Message);
        }
    }
 
    public bool IsReusable {
        get {
            return false;
        }
    }
}


Код на почте
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
protected void btnSend_Click(object sender, EventArgs e)
{
    using (MailMessage mailMessage = new MailMessage())
    {
        mailMessage.From = new MailAddress("user@gmail.com");
        mailMessage.Subject = txtSubject.Text.Trim();
        mailMessage.Body = txtBody.Text.Trim();
        mailMessage.IsBodyHtml = true;
        mailMessage.To.Add(new MailAddress(txtTo.Text.Trim()));
        List<HttpPostedFile> files = (List<HttpPostedFile>)Session["Files"];
        foreach (HttpPostedFile file in files)
        {
            mailMessage.Attachments.Add(new Attachment(file.InputStream, Path.GetFileName(file.FileName), file.ContentType));
        }
 
        SmtpClient smtp = new SmtpClient();
        smtp.Host = "smtp.gmail.com";
        smtp.EnableSsl = true;
        System.Net.NetworkCredential NetworkCred = new System.Net.NetworkCredential();
        NetworkCred.UserName = mailMessage.From.Address;
        NetworkCred.Password = "<Password>";
        smtp.UseDefaultCredentials = true;
        smtp.Credentials = NetworkCred;
        smtp.Port = 587;
        smtp.Send(mailMessage);
    }
    Response.Redirect(Request.Url.AbsoluteUri);
}


При выполнении ошибка Нет доступа к закрытому файлу. Что не так. Загрузка на сервер работает
...
Рейтинг: 0 / 0
оптравка файлов по почте
    #38389496
Гость198448
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дельную консультацию могу оплатить
...
Рейтинг: 0 / 0
оптравка файлов по почте
    #38392363
Zoria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гость198448Вроде получилось, но не удается передать gif и jpg
а все остальные типы файлов получилось?
...
Рейтинг: 0 / 0
оптравка файлов по почте
    #38392692
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гость198448,

извлеките содержимое файла в byte[] буффер.
не храните HttpPostedFile ни в каком виде.
получили содержимое, и отпустили транспортный объект.
...
Рейтинг: 0 / 0
оптравка файлов по почте
    #38392959
Гость198448
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как это сделать? Натолкните на мысль, плиз
...
Рейтинг: 0 / 0
оптравка файлов по почте
    #38393005
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гость198448,

не видел полную картину, но по кускам вижу, что не айс. ну ладно, вот как можно исправить:

определить вот такой примерно класс:

Код: c#
1.
2.
3.
4.
5.
6.
7.
// meanwhile in code
public class SessionFileStore
{
   public byte[] Content { get; set; }
   public string FileName { get; set; }
   public string ContentType { get; set; }
}



доработать вот это:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
using System;
using System.Web;
using System.IO;
using System.Web.SessionState;
using System.Collections.Generic;
public class UploadCS : IHttpHandler, IRequiresSessionState {
    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/plain";
        context.Response.Expires = -1;
        try
        {
            var postedFile = context.Request.Files["Filedata"];  // +
            if(postedFile != null && postedFile.ContentLength > 0) // +
            { // +
               var buffer = new byte[postedFile.ContentLength]; // +
               postedFile.InputStream.Read(buffer, 0, file.ContentLength); // +
               var files = context.Session["Files"] as List<SessionFileStore>; // *
               var fileStore = new SessionFileStore { 
                  Content = buffer, 
                  FileName = postedFile.FileName,
                  ContentType = postedFile.ContentType
               }; // +
               files.Add(fileStore); // *
               context.Response.Write(fileStore.FileName); // *
               context.Response.StatusCode = 200;
            } // +
        }
        catch (Exception ex)
        {
            context.Response.Write("Error: " + ex.Message);
        }
    }
 
    public bool IsReusable {
        get {
            return false;
        }
    }
}



и, конечно, вот это:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
protected void btnSend_Click(object sender, EventArgs e)
{
    using (var mailMessage = new MailMessage 
       {
          From = new MailAddress("user@gmail.com"),
          Subject = txtSubject.Text.Trim(),
          Body = txtBody.Text.Trim(),
          IsBodyHtml = true
       })
    {
        mailMessage.To.Add(new MailAddress(txtTo.Text.Trim()));
        var files = Session["Files"] as List<SessionFileStore>;
        foreach (var file in files)
        {
            mailMessage.Attachments.Add(new Attachment(new MemoryStream(file.Content), Path.GetFileName(file.FileName), file.ContentType));
        } 
        var smtp = new SmtpClient
           {
              Host = "smtp.gmail.com",
              EnableSsl = true,
              UseDefaultCredentials = true,
              Port = 587
           };
        var NetworkCred = new System.Net.NetworkCredential
           {
              UserName = mailMessage.From.Address,
              Password = "<Password>"
            };
        smtp.Credentials = NetworkCred;
        smtp.Send(mailMessage);
    }
    Response.Redirect(Request.Url.AbsoluteUri);
}




не уверен, что здесь уместно применять сессии. сомневаюсь также в уместности использования хандлера. но если устраивает как это работает, то ради бога :)
...
Рейтинг: 0 / 0
оптравка файлов по почте
    #38393233
Гость198448
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Большое спасибо, с меня причитается!!! vladivanych@mail.ru
...
Рейтинг: 0 / 0
оптравка файлов по почте
    #38393264
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гость198448,

необходимо учесть, что ранее до выполнения вышеуказанного кода, должно выполниться следующее:

Код: c#
1.
HttpContext.Current.Session["Files"] = new List<SessionFileStore>;



иначе может не заработать, так как в сессию необходимо положить нужную коллекцию.
...
Рейтинг: 0 / 0
оптравка файлов по почте
    #38393267
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

Код: plaintext
1.
2.
 [code=c#]
HttpContext.Current.Session["Files"] = new List<SessionFileStore>();

...
Рейтинг: 0 / 0
оптравка файлов по почте
    #38393413
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttне уверен, что здесь уместно применять сессии. сомневаюсь также в уместности использования хандлера. но если устраивает как это работает, то ради бога :)Автор тупо скопипастил код этого умельца .
А тот хотел сделать загрузку вложений как в gmail. Вот только не учёл того, что сессия блокируется на время запроса.

Письмо надо создавать в базе (ну или на диске) как черновик и соответсвенно писать сохранять вложения в базу (или на диск).
Это если хочется как в gmail. А если хочется на коленке, то можно и в сессию пихать.
...
Рейтинг: 0 / 0
оптравка файлов по почте
    #38393598
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

согласен, надо на диск.
...
Рейтинг: 0 / 0
оптравка файлов по почте
    #38393608
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, с сессией ты просто отжег. Редкостный гавнокод, "архитектура" без ума и фантазии что называется :)
...
Рейтинг: 0 / 0
оптравка файлов по почте
    #38393627
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУhVostt, с сессией ты просто отжег. Редкостный гавнокод, "архитектура" без ума и фантазии что называется :)

привели нерабочий код, я показал как сделать его рабочим. всё.

что ты несёшь? какая ещё архитектура? совсем крышак поехал, да? попей водички.
...
Рейтинг: 0 / 0
оптравка файлов по почте
    #38393634
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttпривели нерабочий код, я показал как сделать его рабочим. всё.
Собственно, вся твоя сущность. Бездумное перелопачивание УГ без включения мозгов. Так обычно действуют запрограммированные кодеманки.

hVosttчто ты несёшь? какая ещё архитектура? совсем крышак поехал, да? попей водички.
Я несу суть, которую изложил в предыдущем посте. Архитектура самая обычная - место хранение файлов. "Крышак" на месте, всё в порядке, спасибо. Водички пока не хочу, чуть позже.
...
Рейтинг: 0 / 0
оптравка файлов по почте
    #38393664
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

связная разумная речь будет? а то набор каких-то слов, что ты там хотел сказать я так и не понял.

какая архитектура? какая кодеманка? какую, и куда, ты там несёшь суть?
сегодня в сумасшедшем доме день открытых дверей что ли?
...
Рейтинг: 0 / 0
оптравка файлов по почте
    #38393675
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ, связная разумная речь будет?
Была уже. У тебя проблемы с восприятием?

hVosttа то набор каких-то слов, что ты там хотел сказать я так и не понял.
Любое предложение - набор каких-то слов. Если ты не осилил еще работу с файлами, пойди закрепи пробелы материалом из документации.

hVosttкакая архитектура? какая кодеманка? какую, и куда, ты там несёшь суть?
Еще раз, у тебя проблемы с восприятием? Повторяю, архитектура обычная, по хранению файлов. Кодеманка обычная, классическая, бездумная. Суть, которую озвучил в первом своём посте, уже писал. Несу суть в твой неокрепший мозг, куда ж еще.

hVosttсегодня в сумасшедшем доме день открытых дверей что ли?
Видимо да. Поэтому мы снова видим от тебя "качественные" ответы, подкрепленные "практикой" и "опытом".
...
Рейтинг: 0 / 0
оптравка файлов по почте
    #38393695
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

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

МСУЕсли ты не осилил еще работу с файлами

пояснение этих слов будет? или ты как был обычной балаболкой, так и остался ею?

МСУПоэтому мы снова видим от тебя "качественные" ответы, подкрепленные "практикой" и "опытом".

когда ж, наконец, мы увидим что-нибудь, кроме дешёвых детских наездов, от тебя?
...
Рейтинг: 0 / 0
оптравка файлов по почте
    #38393727
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ, да, у меня явные проблемы с восприятием твоего бессмысленного бреда.
Почему бреда? Вроде же всё тебе разжевал, в рот положил. Какие остались вопросы?

hVosttумей оформить грамотно свою мысль, чтобы тебя поняли.
10 раз уже это сделал. Но понять элементарные вещи - не твой случай.

hVosttМСУЕсли ты не осилил еще работу с файлами
пояснение этих слов будет? или ты как был обычной балаболкой, так и остался ею?
Что тут пояснять? То, что хранишь файлы в сессии? Прими яду, серьезно.

hVosttМСУПоэтому мы снова видим от тебя "качественные" ответы, подкрепленные "практикой" и "опытом".
когда ж, наконец, мы увидим что-нибудь, кроме дешёвых детских наездов, от тебя?
У тебя галлюцинации. Что еще ты хочешь видеть?
...
Рейтинг: 0 / 0
оптравка файлов по почте
    #38393733
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

МСУЧто тут пояснять? То, что хранишь файлы в сессии? Прими яду, серьезно.

у тебя вместо головного мозга протез. я уже сказал выше, что надо бы хранить на диске. советую обратиться к целому спектру врачей. начни с окулиста. и прекращай трепать мои нервы :)
...
Рейтинг: 0 / 0
оптравка файлов по почте
    #38393749
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttу тебя вместо головного мозга протез.
У тебя вместо головы на плечах - швабра с тряпкой.

hVosttя уже сказал выше, что надо бы хранить на диске.
Я в курсе, что ты так сказал, пока тебя не окунули в навоз и не объяснили, что так делать нехорошо. Во-вторых, я прочел твой слив после того, как запостил сообщение. В-третьих, изначально ты ляпнул, что "не уверен, что здесь уместно применять сессии". За такой ляп уже можно смывать тебя в сточную канализацию.

hVosttсоветую обратиться к целому спектру врачей. начни с окулиста. и прекращай трепать мои нервы :)
Советую принять яду и избавить общество от еще одной кодеманки, у которой руки растут из задницы. Согласен? :)
...
Рейтинг: 0 / 0
оптравка файлов по почте
    #38393766
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

это называется вежливость. незнакомое до селе для тебя понятие. я сомневаюсь, что его смысл до тебя когда-нибудь дойдёт. ибо из двух состояний: злобно-агрессивное поведение и облизывание чужой задницы, в других ты явно не пребываешь.
...
Рейтинг: 0 / 0
оптравка файлов по почте
    #38393774
Гость198448
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ребята не собачтесь! Код, который представил в самом начале я немного причасал . Почта заработала, но передает файлы размером не более 100 кб
...
Рейтинг: 0 / 0
оптравка файлов по почте
    #38393781
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гость198448,

скорее всего ограничение почтового сервиса. раньше в таких случаях, файлы сплиттили, а сегодня выкладывают в облако, а в письмо кладут прямую ссылку на файл.
...
Рейтинг: 0 / 0
оптравка файлов по почте
    #38393785
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ, это называется вежливость. незнакомое до селе для тебя понятие.
Это называется тупость. Ни больше не меньше.

hVosttя сомневаюсь, что его смысл до тебя когда-нибудь дойдёт. ибо из двух состояний: злобно-агрессивное поведение и облизывание чужой задницы, в других ты явно не пребываешь.
Разверни вентилятор от себя, забрызгаешься.
...
Рейтинг: 0 / 0
оптравка файлов по почте
    #38393790
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

думай, и убеждай себя в чём угодно. это твоё законное право :)
...
Рейтинг: 0 / 0
25 сообщений из 40, страница 1 из 2
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / оптравка файлов по почте
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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