Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.08.2010, 10:22   #1
IliaIT
Форумчанин
 
Аватар для IliaIT
 
Регистрация: 17.03.2009
Сообщений: 977
Вопрос Вложения письма.

Столкнулся с тем что при принятии письма принимает и вложения (что в принципе естественно). но вот почему-то вложения остаются в винде в папке temp (C:\Documents and Settings\Администратор\Local Settings\Temp\) в виде файлов Ind87.tmp. Вопрос: как удалять вложения письма после принятия?

на форме есть компоненты почты : TidPOP3, TIdMessage, TidSMTP.
Прога в delphi 7.

Код обработки писем.
Код:
procedure TForm1.Button3Click(Sender: TObject);
var
  i: Integer;
  out_mail:boolean;
begin
  try
    POP3.Host:=E_Host; // адресс почтового сервера
    POP3.Port:=strtoint(E_Port_p);           // порт по которому будет осуществляться подключение
    POP3.Username:=E_Username; // Логин пользователя
    POP3.Password:=E_Password;   // пароль пользователя
    POP3.Connect; // подключение по протоколу POP3, по настрокам в компоненте IdPOP3, с именем POP3
    i:=1;
    repeat
      Memo1.Clear;   // очистка компонента memo для отображения текста письма.
      IdMessage.Clear; // очистка буфера для сообщения
      out_mail:=POP3.Retrieve(i,IdMessage);  // получение одного сообщения
      if out_mail then
      begin
        Memo1.Lines.AddStrings(IdMessage.Body); // передача сообщения из компонента IdMessage в memo
       // вывод в компоненты Label информации о сообщении.
        Label1.Caption := IdMessage.From.Text;
        Label2.Caption := IdMessage.Recipients.EmailAddresses;
        Label3.Caption := IdMessage.CCList.EMailAddresses;
        Label4.Caption := IdMessage.Subject;
        Label5.Caption := FormatDateTime('yyyy.mm.dd hh:mm:ss', IdMessage.Date);
        Label6.Caption := IdMessage.ReceiptRecipient.Text;
        Label7.Caption := IdMessage.Organization;
        if Label4.Caption=E_Subject then //проверка на нужное письмо тех. данных
        begin
          {ConectSQL;
          mail_data;
          DisConectSQL;
          POP3.Delete(i);}
          Memo2.Lines.Add('Получил 2');
        end;

        Memo2.Lines.Add('Получил 1 '+inttostr(i));

        i:=i+1;
      end;
    until  not(out_mail);
    
    ms_text.Caption :='проверил почту '+datetimetostr(now());
    POP3.Disconnect; // разрыв связи
  except
    Save_log('ошибка в процедуре  Button3Click, принятие почты');
  end;
end;
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
IliaIT вне форума Ответить с цитированием
Старый 17.08.2010, 09:51   #2
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

А удалять собственно только руками. или надеятся на скорый ребут, при котором (по идее) системная папка temp должна почиститься
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 17.08.2010, 13:06   #3
IliaIT
Форумчанин
 
Аватар для IliaIT
 
Регистрация: 17.03.2009
Сообщений: 977
По умолчанию

Хорошо, раз только руками так руками, тогда вопрос как определить имя этого файла? ведь у них только вроде начало общее, и то не факт что это от этой проги. именно с этим началом файл. У письма может быть и 2 и более вложений, как следствие создастся несколько файлов(а они могут быть большие 2-5 метров).

Да, забыл добавить, после перезагрузки проги файлы остаются, при перезагрузке компа они тоже остаются, винда 2003. да и комп перезагружается обычно не чаще 1 раз в 3-4 месяца.
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
IliaIT вне форума Ответить с цитированием
Старый 18.08.2010, 10:26   #4
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

You need to set the TIdAttachment.FileIsTempFile property to True (for each
attachment) if you want them to be automatically deleted when the
TIdAttachment instance is freed
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 24.08.2010, 08:29   #5
IliaIT
Форумчанин
 
Аватар для IliaIT
 
Регистрация: 17.03.2009
Сообщений: 977
По умолчанию

так и не понял как в этот тип зайти TIdAttachment из IdMessage. или надо ещё переменную или как то по другому? а можно пример кода?
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
IliaIT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Допускается до 7 уровней вложения функций IF, а если нужно больше? kapitel_bc@ukr.net Microsoft Office Excel 10 10.02.2013 12:37
Не могу посмотреть вложения. ROBERT033 О форуме и сайтах клуба 11 24.02.2009 22:56
отправка письма joker Win Api 0 14.02.2009 10:46
Кодировка вложения(имени файла) iamur Работа с сетью в Delphi 2 17.01.2008 15:35