Форум: "Начинающим";
Текущий архив: 2007.09.23;
Скачать: [xml.tar.bz2];
ВнизПолучение почты в Delphi Найти похожие ветки
← →
DimOk © (2007-08-27 12:23) [0]Добрый день всем. Хочу поинтересоваться, как можно сохранить прикрепленные файлы к письму.
procedure TForm1.Button1Click(Sender: TObject);
var MyMessage: TIdMessage;
CountMessages: Integer;
attach: TIDAttachment;
begin
MyMessage := TIdMessage.Create(nil);
IdPOP31.Connect();
CountMessages := IdPOP31.CheckMessages();
while CountMessages > 0 do begin
if IdPOP31.Retrieve(CountMessages,MyMessage) = True then begin
RichEdit1.Lines.Assign(MyMessage.Body);
attach := TIDAttachment.Create(MyMessage.MessageParts);
//А дальше я не знаю что делать (касательно прикрепленных файлов)
//attach.SaveToFile(const FileName: TFeliName): Boolean - как работает эта функция в хелпе нет ни каких данных и примеров по indy компонентам.
end;
CountMessages := CountMessages - 1;
end;
ShowMessage(IntToStr(IdPOP31.CheckMessages()));
MyMessage.Free;
IdPOP31.Disconnect;
end;
← →
Сергей М. © (2007-08-27 12:29) [1]
> как работает эта функция в хелпе нет ни каких данных
Как это нет ?
Вот цитата как раз из хэлпа к этой ф-ции:Stores a message part to a disk file.
function SaveToFile(const FileName: TFileName): Boolean;
Parameters
const FileName: TFileName
File name where the message part will be stored.
Return Value
Boolean - True when the message parts is stored.
Description
SaveToFile is a Boolean function used to store the attachment that represents the message part to the file specified in Filename.
Все просто и понятно, что еще надо ?
← →
umbra © (2007-08-27 13:13) [2]
for i := 0 to attach.Count - 1 do
if attach[i] is TIdAttachmentFile then
attach[i].SaveToFile(attach[i].FileName);
← →
DimOK © (2007-08-27 14:47) [3]
> for i := 0 to attach.Count - 1 do
> if attach[i] is TIdAttachmentFile then
> attach[i].SaveToFile(attach[i].FileName);
Так не помогает attach не имеет св-ва или процедуры Count - при компиляции выделяет красным, может быть я не все unit использую.....?
← →
DimOK © (2007-08-27 14:50) [4]
> Как это нет ?
для какого это message part? Это я видел у меня используется TIdMessage и
TIDAttachment....
← →
Сергей М. © (2007-08-27 14:56) [5]
> для какого это message part?
Для всех подряд, очевидно.
А где ты спросил, что тебя интересует сохранение отдельной части в отдельный файл ?
Не было такого)
> attach не имеет св-ва или процедуры Count
См. св-во TIdMessage.MessageParts.AttachmentCount
← →
DimOK © (2007-08-27 15:05) [6]
> См. св-во TIdMessage.MessageParts.AttachmentCount
Это понятно св-во содержит количество прикреплений, а как каждое из них по отдельности сохранить на жесткий диск?
← →
DimOK © (2007-08-27 15:07) [7]attach := TIDAttachment.Create(MyMessage.MessageParts);
Может я в этом ошибаюсь?
← →
umbra © (2007-08-27 15:36) [8]ДА, это я чушь спорол
uses ..., IdMessageParts, ....
var
attfile: TIdAttachmentFile;
{.................................}
with MyMessage.MessageParts do
for i := 0 to Count - 1 do
if Items[i].PartType = mptAttachment then
begin
attfile := Items[i] as TIdAttachmentFile;
attfile.SaveToFile(attfile.FileName);
end;
← →
DimOK © (2007-08-27 15:59) [9]
> uses ..., IdMessageParts, ....
Теперь, иам ругается [Fatal Error] Unit1.pas(8): File not found: "IdMessageParts.dcu"
← →
DimOK © (2007-08-27 16:03) [10]
> attfile: TIdAttachmentFile;
и здесь [Error] Unit1.pas(37): Undeclared identifier: "TIdAttachmentFile"
← →
umbra © (2007-08-27 16:04) [11]
> [Fatal Error] Unit1.pas(8): File not found: "IdMessageParts.
> dcu"
>
Ну тогда дело плохо. У Вас какая версия Инди? Я про 10-ую.
← →
DimOK © (2007-08-27 16:06) [12]
> Ну тогда дело плохо. У Вас какая версия Инди? Я про 10-ую.
Тогда все понятно 9.00.10 :)
← →
umbra © (2007-08-27 16:17) [13]но в 9-ке все равно где-то объявлен тип
TIdMessageParts
. Поищите поиском по тексту модулей и добавьте нужный в юзесы.
← →
DimOK © (2007-08-27 16:41) [14]TIdMessage содержит MessageParts у которого нет функции SaveToFile(......), для отправки сообщения я использовал следующее:
TIDAttachment.Create(MainForm.MyMessage.MessageParts,"Выгрузка.xml"); и все нормально проходит, а при получении я не знаю как добраться именно до прикрепленных данных
быть может я не правильно использую TIDAttachment....
← →
DimOK © (2007-08-27 16:43) [15]
> но в 9-ке все равно где-то объявлен тип TIdMessageParts.
> Поищите поиском по тексту модулей и добавьте нужный в юзесы.
>
Поиск не дал результата.....:(
← →
Сергей М. © (2007-08-27 16:47) [16]
> Поиск не дал результата
Быть того не может.
Если у тебя не возникли проблемы с ид-ром TIdMessage, то и с TIdMessageParts тоже не должны возникнуть - оба ид-ра объявлены в одном и том же юните IdMessage.pas.
Где и как ты "искал" - непонятно)
← →
DimOK © (2007-08-27 16:55) [17]
> Где и как ты "искал" - непонятно)
Search->Find in Files;Find искал TIdMessageParts
← →
DimOK © (2007-08-27 16:57) [18]
> > Где и как ты "искал" - непонятно)
>
> Search->Find in Files;Find искал TIdMessageParts
Сорри ступи, нашел :)
← →
DimOK © (2007-08-27 17:00) [19]
> Поищите поиском по тексту модулей и добавьте нужный в юзесы.
содержиться в IdMessage, но он у меня используется.
← →
Сергей М. © (2007-08-27 17:04) [20]
> он у меня используется
ТОгда ты что-то путаешь.
"ругани" именно на TIdMessageParts быть никак не должно.
← →
DimOK © (2007-08-27 17:08) [21]
> ТОгда ты что-то путаешь.
>
> "ругани" именно на TIdMessageParts быть никак не должно.
>
т.е. я пишу var: mess_parts: TIdMessageParts; и все должно быть ништяк.....
так пишу......
И правда не ругается...:)
Буду ковырять дальше.
← →
DimOK © (2007-08-27 17:24) [22]
> > ТОгда ты что-то путаешь.
> >
> > "ругани" именно на TIdMessageParts быть никак не должно.
>
> >
>
> т.е. я пишу var: mess_parts: TIdMessageParts; и все должно
> быть ништяк.....
> так пишу......
>
> И правда не ругается...:)
> Буду ковырять дальше.
но тогда у mess_parts нету функции SaveToFile
← →
umbra © (2007-08-27 18:02) [23]with MyMessage.MessageParts do
for i := 0 to Count - 1 do
if Items[i] is TIdAttachment then
TIdAttachment(Items[i]).SaveToFile(TIdAttachment(Items[i]).FileName);
← →
DimOk © (2007-08-28 09:28) [24]
> with MyMessage.MessageParts do
> for i := 0 to Count - 1 do
> if Items[i] is TIdAttachment then
> TIdAttachment(Items[i]).SaveToFile(TIdAttachment(Items[i]).
> FileName);
Вроде все ништяк - уже обрабовался....но....
Пишет List index out of bounds (0)
Проверил - написал ShowMessage(IntToStr(MyMessage.MessageParts)) выдает нуль, хотя сообщение содержит два прикрепления...:(
← →
DimOk © (2007-08-28 09:33) [25]
> Проверил - написал ShowMessage(IntToStr(MyMessage.MessageParts))
> выдает нуль, хотя сообщение содержит два прикрепления...
> :(
Может быть у меня Exchange забирает почту быстрее чем программа...? :)
Попробую с другим ящиком....
← →
DimOk © (2007-08-28 09:41) [26]
> Может быть у меня Exchange забирает почту быстрее чем программа.
> ..? :)
> Попробую с другим ящиком....
Нет такая же шняга
← →
Сергей М. © (2007-08-28 09:44) [27]
> DimOk © (28.08.07 09:41) [26]
Ну есть же демо-проект в составе Инди - maildemo.dpr, почему не изучить его ?
← →
DimOk © (2007-08-28 10:01) [28]
> Ну есть же демо-проект в составе Инди - maildemo.dpr, почему
> не изучить его ?
C:\Program Files\Borland\Delphi7\Demos\Indy - если это там, то это текстовый фай в котором содержиться следующее:
Delphi 7
Indy V9 Demos
===========================
Indy V9 Demos
Demo applications for Indy V9 are available from the
downloads section on the Indy site at:
http://www.nevrona.com/indy
As new demos are constantly being built and tested,
this is the most up to date location for demo
downloads.
If you have any problems with demos please join the
"Indy Demos" group at yahoo groups, and report them
there:
http://groups.yahoo.com/group/Indy-Demos/
http://www.nevrona.com/indy - на этот ресурс я заходил но что там скачевать так и не понял...
← →
DimOk © (2007-08-28 10:03) [29]Понял в чем дело цикл - у меня получается черт знает каой:
CountMessages := IdPOP31.CheckMessages();
while CountMessages > 0 do begin
with MyMessage.MessageParts do begin
for i := 0 to Count - 1 do begin
if Items[i] is TIdAttachment then begin
TIdAttachment(Items[i]).SaveToFile(TIdAttachment(Items[i]).FileName);
end;
end;
end;
CountMessages := CountMessages - 1;
end;
MyMessage.MessageParts - это постоянно одно и тоже сообщение, т.е. нет перехода к следующему. Как его осуществить не подскажите?
← →
DimOk © (2007-08-28 10:09) [30]
> MyMessage.MessageParts - это постоянно одно и тоже сообщение,
> т.е. нет перехода к следующему. Как его осуществить не
> подскажите?
Все понял
IdPOP31.Retrieve(CountMessages,MyMessage)
← →
DimOk © (2007-08-28 10:20) [31]TIdAttachment(Items[i]).SaveToFile(TIdAttachment(Items[i]).FileName);
После этой строки теперь ругается пишет что не может сохранить.
← →
umbra © (2007-08-28 10:33) [32]
> пишет что не может сохранить
что и куда? полный текст сообщения можно?
← →
DimOk © (2007-08-28 10:38) [33]Error saving Attachment
← →
umbra © (2007-08-28 10:45) [34]а если в отладчике посмотреть, чему равно
FileName
?
← →
Anatoly Podgoretsky © (2007-08-28 10:50) [35]> DimOk (28.08.2007 10:20:31) [31]
И куда по твоему он будет сохранять?
← →
DimOk © (2007-08-28 10:52) [36]Пишет - ундекларе идентифер Items[i], но после того как я написал:
SaveToFile(TIdAttachment(MyMessage.MessageParts.Items[i]).FileName);
Все заработало! Всем огромное спасибо!
← →
DimOk © (2007-08-28 10:53) [37]
> И куда по твоему он будет сохранять?
Если указать только имя то в папку с проектом, а можно и "C:\бла бла бла\" + MyMessage.MessageParts.Items[i]).FileName
← →
Anatoly Podgoretsky © (2007-08-28 10:53) [38]
> а если в отладчике посмотреть, чему равно FileName?
А чего смотреть и так ясно, что он равен информации в письме, если она прописана.
Его возможно надо обработать до допустимого и указать куда сохранять, как это делают почтовики, а не а бы куда и черт знает что записать.
← →
Anatoly Podgoretsky © (2007-08-28 10:54) [39]
> Пишет - ундекларе идентифер Items[i], но после того как
> я написал:
Как и предполагалось - обманывал нас.
← →
Anatoly Podgoretsky © (2007-08-28 10:55) [40]
> Если указать только имя то в папку с проектом,
Заблуждение
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.09.23;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.059 c