Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вложение электронной почты [D7, XP]


Страницы:   1 2

Alex Ford ©   (2008-05-29 10:14:00) 

Здрасте!

В отправляемое сообщение необходимо прикрепить файлы. По одному получилось. Но 2-3...n файлов не отправляет. Если в атачменте список файлов представляется в виде списка - StringList.
В список файлы добавлены. Для наглядности отображеню в ListBox.
Но отправляет только один файл - последний.
Подскажите плиз, в чем ошибка?

       
for i:=0 to filelist.Count-1 do
   TIdAttachment.Create(M1.MessageParts, filelist.Strings[i]);


Palladin   (2008-05-29 11:12:00) [21]

бредишь? ну вот на кой нужно показывать сколько частей в сообщении, когда ты туда еще ничего не добавил?


> filelist.Add(pchar(opendialog1.FileName));

это что еще за бред? зачем приводить к PChar? Разве от тебя PChar требуется?


> listbox2.Items.AddStrings(filelist);

а это что за бред? ради однойстрочки создавать целый объект TStringList ? с дуба рухнул? listbox2.Items.Add(opendialog1.FileName) религия не позволяет?


> ShowMessage(IntToStr(M1.MessageParts.Count))

и каким попом интересно на добавлении в listbox2 строкискажется изменение количества элементов в M1.MessageParts?


ANB   (2008-05-29 11:11:00) [22]

     Attach_Count := High(AttachList);
     for Attach_No := 0 to Attach_Count do begin
       AttachFileName := AttachList[Attach_No].FileName;
       AttachBody := AttachList[Attach_No].Body;
       if (Length(AttachBody) > 0) then begin
         // Присоединим письмо
         IdAttachment := TIdAttachmentMemory.Create(Msg.MessageParts);
         IdAttachment.FileName := AttachFileName;
         Stream := IdAttachment.OpenLoadStream;
         try
           Stream.Write(AttachBody[1], Length(AttachBody));
         finally
           IdAttachment.CloseLoadStream;
         end;
       end;
     end;

Примерно так. Это из строк вложения добавляются. Легко переделать на сразу из файлов.


Alex Ford   (2008-05-29 11:07:00) [23]

Совсем запутался :(


//Добавим файлы
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
   FileList:= TStringList.Create;
 if opendialog1.Execute then
 begin
   filelist.Add(pchar(opendialog1.FileName));
   listbox2.Items.AddStrings(filelist);
 //    edit1.Text:= opendialog1.FileName;
 ShowMessage(IntToStr(M1.MessageParts.Count))

 end;
end;


//Отправим
...........
...........
...........
      TIdAttachment.Create(M1.MessageParts, filelist.Strings[i]));
...........
...........
...........



Palladin   (2008-05-29 11:00:00) [24]

ShowMessage(IntToStr(M1.MessageParts.Count)) сколько показывает?


Reindeer Moss Eater   (2008-05-29 10:53:00) [25]

что я имею ввиду я уже сказал


Alex Ford   (2008-05-29 10:47:00) [26]

ты имеешь в виду просто TIdAttachment.Create(M1.MessageParts, filelist.Strings[i]);?


Reindeer Moss Eater   (2008-05-29 10:45:00) [27]

Если ясно, то выноси создание экземпляра TIdAttachment из цикла.


Alex Ford   (2008-05-29 10:44:00) [28]

мдя..... валяй....
Ясно что аттачмент должен быть один. Мне непонятно как использовать привязку нескольких файлов. С одним файлом я разобрался.


Reindeer Moss Eater   (2008-05-29 10:40:00) [29]

Экземпляр TIdAttachment должен быть один


Reindeer Moss Eater   (2008-05-29 10:37:00) [30]

Проблема в том, что усли указать в ....

настоящая проблема описана в [1]


Alex Ford   (2008-05-29 10:35:00) [31]

Этот код прокатит без проблем TIdAttachment.Create(Msg.MessageParts,'c:\file.zip');

А этот код не катит вообще TIdAttachment.Create(Msg.MessageParts,'c:\file.zip'+';'+'c:\file2.zip');


Alex Ford   (2008-05-29 10:33:00) [32]

Проблема в том, что усли указать в аттачмене просто (C:\Temp\File1.txt) то он отправится без проблем. Один файл. Мне нужно отправить ЛЮБОЕ количество файлов. Я создаю StringList и добавляю имена файлов.
Перед отправкой перебираю весь спиок. Но отправляется только последний файл. Запутался уже. Подскажите в какую сторону копать. Чтобы решить задачу с отпракой файлов с N количеством


Reindeer Moss Eater   (2008-05-29 10:32:00) [33]

ты спросил в чем у тебя ошибка.
тебе ответили в чем.
ты продолжаешь упорствовать, что "тебе так надо", и что "так и задумано"

валяй.


Reindeer Moss Eater   (2008-05-29 10:29:00) [34]

ну тогда у тебя все ок. чего жалуешься?


Alex Ford   (2008-05-29 10:26:00) [35]

сколько файлов - столько и аттачменов


Palladin   (2008-05-29 10:24:00) [36]


> Reindeer Moss Eater ©   (29.05.08 10:21) [3]

что бы медитировать над ссылками, нужно знать, что это такое :)


Reindeer Moss Eater   (2008-05-29 10:21:00) [37]

Помедитируй над этим:

for i:=0 to filelist.Count-1 do
  TIdAttachment.Create

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


Alex Ford   (2008-05-29 10:19:00) [38]

Тогда как правильно решить?
Я пытался в таком виде C:\file1.txt +';'+file2.txt
Но не пашет. Помоему перечислять имена файлов можно через разделитель - т.е. указать ";"


Reindeer Moss Eater   (2008-05-29 10:16:00) [39]

В том, что у тебя аттачметов создается по числу файлов, и используется последний


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо