![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проверка почты [D7]
Novichok_New © (2007-02-17 16:27:00)Создаю свою программу для приёма/передачи почты с помощью бесплатного компонента «SakEmail»:
procedure TForm1.CntClick(Sender: TObject);
begin
SakPOP1.Host := EditHost.text;
SakPOP1.UserId := EditUserId.text;
SakPOP1.UserPasswd := EditPasswd.text;
StatusBar1.Panels[0].text := 'Wait a moment, please...';
SakPOP1.connect;
if SakPOP1.POPError then
begin
MessageDlg( 'Connect failed. Maybe the server is down or not responding.',
mtError, [mbOk], 0);
exit;
end;
if not SakPOP1.login then
begin
ShowMessage('Unauthorized access...');
exit;
end;
SakPOP1.Init;
showMessage( 'You have ' + intToStr( SakPOP1.NewMsgsCount) + ' new msg(s) of ' +
intToStr( SakPOP1.MsgsCount));
BtnCancel.Enabled := true;
sakPOP1.retrieveAllMessages( SakMsgList1);
BtnCancel.Enabled := false;
SakPOP1.Disconnect;
if SakMsgList1.count > 0 then
begin
currentMsg := 0;
showCurrentMsg;
end;
StatusBar1.Panels[0].text := 'Done. ' + intToStr( SakMsgList1.count) + ' msgs retrieved.';
end;
За отсутствие документации к оному, появилось несколько вопросов:
1. Как прописать сюда код для кнопки «Стоп», прерывающей приём почты?
2. Как дополнить код следующим:при завершении загрузки письма автоматически удалять его с сервера. Если к письму существует «аттачмент», то не удалять письмо и задать вопрос – загрузить файл сейчас или сделать это позже? Соответственно, как из данного кода «выдернуть» строки отвечающие за загрузку аттачмента, чтобы сделать это позже?
Dmitrij_K (2007-02-19 23:07:00) [1]
> Novichok_New © (19.02.07 16:55) [12]
ЭТО ВОПРОС?
Вытянуть можно все что есть в заголовке сообщения
Novichok_New (2007-02-19 16:55:00) [2]Если да, то из ниже перечисленного можно "выудить" из POP3.RetrieveHeader(intIndex, IdMessage);
Label1.Caption := IdMessage.From.Text;
Label2.Caption := IdMessage.Recipients.EmailAddresses;
Label3.Caption := IdMessage.CCList.EMailAddresses;
Label4.Caption := IdMessage.Subject;
Label5.Caption := FormatDateTime('dd mmm yyyy hh:mm:ss', IdMessage.Date);
Label6.Caption := IdMessage.ReceiptRecipient.Text;
Label7.Caption := IdMessage.Organization;
Novichok_New (2007-02-19 16:55:00) [3]Если да, то что из ниже перечисленного можно "выудить" из POP3.RetrieveHeader(intIndex, IdMessage);
Label1.Caption := IdMessage.From.Text;
Label2.Caption := IdMessage.Recipients.EmailAddresses;
Label3.Caption := IdMessage.CCList.EMailAddresses;
Label4.Caption := IdMessage.Subject;
Label5.Caption := FormatDateTime('dd mmm yyyy hh:mm:ss', IdMessage.Date);
Label6.Caption := IdMessage.ReceiptRecipient.Text;
Label7.Caption := IdMessage.Organization;
Novichok_New (2007-02-19 16:48:00) [4]Я правильно понимаю:
POP3.Connect; // подключение по протоколу POP3
POP3.RetrieveHeader(intIndex, IdMessage); //ТОЛЬКО ЗАГОЛОВОК ПИСЬМА :-)
POP3.Retrieve(1,IdMessage); // получение сообщения с body
POP3.Disconnect; // разрыв связи
???
Dmitrij_K (2007-02-19 16:12:00) [5]В Indy функция так и называется "Получить Заголовок" по-английски.
Novichok_New (2007-02-19 16:02:00) [6]можно только загружать отдельно заголовок или заголовок+несколько строк тела письма...
Друг, как?!? Второй день, перерыл везде - одни упоминания, что подобное возможно! Indy, FastNet, SakEmail... пример бы для чего-угодно!
Плиз...
~~:-(
Dmitrij_K (2007-02-18 18:53:00) [7]
> как отделять аттачмент от письма, или (лучше) как загружать
> письмо по – частям (отдельно «Тема», отдельно «Текст письма»
> … «аттачмент»)?
AFAIK
можно только загружать отдельно заголовок или заголовок+несколько строк тела письма. Отдельно загрузить аттач или текст письма не получится
Novichok_New (2007-02-18 18:39:00) [8]Народ!
Неужели нет способа проверить почту без закачки вложений?
Novichok_New (2007-02-18 09:45:00) [9]Мне главное – узнать: как отделять аттачмент от письма, или (лучше) как загружать письмо по – частям (отдельно «Тема», отдельно «Текст письма» … «аттачмент»)?
Если с удалением писем с сервера ещё как-то можно разобраться, то про такие операции никто не писал!
Novichok_New (2007-02-18 09:39:00) [10]Можно поставить вопрос по-другому:
- как загрузить только заголовки (От, Кому, Тема, Дата);
- после выбора писем пользователем (допустим, с помощью CheckBox-ов в ListView) загрузить только эти письма;
- полностью очистить почтовый ящик;
Novichok_New (2007-02-18 08:50:00) [11]Может, действовать по аналогии с другими компонентами?
Как, например, при использовании Indy удалять письмо с сервера и прерывать приём почты?
S@shka (2007-02-17 22:47:00) [12]Ответ на данный вопрос - не возможен
ибо "За отсутствие документации к оному"
+ BtnCancel.Enabled := true;
sakPOP1.retrieveAllMessages( SakMsgList1);
BtnCancel.Enabled := false;
retriveALL - не предполагает прерывания....
Итог: Читать по одному сообщению через а-ля retriveMessage (messageID)
Novichok_New (2007-02-17 16:41:00) [13]На первый вопрос я предполагаю ответ:
procedure TForm1.BtnCancelClick(Sender: TObject);
begin
SakPOP1.Cancel;
end;
Но,ведь, для чего-то BtnCancel.Enabled := false - написали! Значит, в процессе приёма почты, нажатие на неё может вызвать ошибку?