![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вложение электронной почты [D7, XP]
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]В том, что у тебя аттачметов создается по числу файлов, и используется последний