Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.03.11;
Скачать: CL | DM;

Вниз

Проверка почты   Найти похожие ветки 

 
Novichok_New ©   (2007-02-17 16:27) [0]

Создаю свою программу для приёма/передачи почты с помощью бесплатного компонента «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. Как дополнить код следующим: при завершении загрузки письма автоматически удалять его с сервера. Если к письму существует «аттачмент», то не удалять письмо и задать вопрос – загрузить файл сейчас или сделать это позже? Соответственно, как из данного кода «выдернуть» строки отвечающие за загрузку аттачмента, чтобы сделать это позже?


 
Novichok_New ©   (2007-02-17 16:41) [1]

На первый вопрос я предполагаю ответ:

procedure TForm1.BtnCancelClick(Sender: TObject);
begin
 SakPOP1.Cancel;
end;


Но,ведь, для чего-то BtnCancel.Enabled := false - написали! Значит, в процессе приёма почты, нажатие на неё может вызвать ошибку?


 
S@shka ©   (2007-02-17 22:47) [2]

Ответ на данный вопрос - не возможен

ибо "За отсутствие документации к оному"

+ BtnCancel.Enabled := true;
   sakPOP1.retrieveAllMessages( SakMsgList1);
   BtnCancel.Enabled := false;

 retriveALL - не предполагает прерывания....

Итог: Читать по одному сообщению через а-ля retriveMessage (messageID)


 
Novichok_New ©   (2007-02-18 08:50) [3]

Может, действовать по аналогии с другими компонентами?
Как, например, при использовании Indy удалять письмо с сервера и прерывать приём почты?


 
Novichok_New ©   (2007-02-18 09:39) [4]

Можно поставить вопрос по-другому:
- как загрузить только заголовки (От, Кому, Тема, Дата);
- после выбора писем пользователем (допустим, с помощью CheckBox-ов в ListView) загрузить только эти письма;
- полностью очистить почтовый ящик;


 
Novichok_New ©   (2007-02-18 09:45) [5]

Мне главное – узнать: как отделять аттачмент от письма, или (лучше) как загружать письмо по – частям (отдельно «Тема», отдельно «Текст письма» … «аттачмент»)?
Если с удалением писем с сервера ещё как-то можно разобраться, то про такие операции никто не писал!


 
Novichok_New ©   (2007-02-18 18:39) [6]

Народ!
Неужели нет способа проверить почту без закачки вложений?


 
Dmitrij_K   (2007-02-18 18:53) [7]


> как отделять аттачмент от письма, или (лучше) как загружать
> письмо по – частям (отдельно «Тема», отдельно «Текст письма»
> … «аттачмент»)?

AFAIK
можно только загружать отдельно заголовок или заголовок+несколько строк тела письма. Отдельно загрузить аттач или текст письма не получится


 
Novichok_New ©   (2007-02-19 16:02) [8]

можно только загружать отдельно заголовок или заголовок+несколько строк тела письма...

Друг, как?!? Второй день, перерыл везде - одни упоминания, что подобное возможно! Indy, FastNet, SakEmail... пример бы для чего-угодно!
Плиз...
~~:-(


 
Dmitrij_K   (2007-02-19 16:12) [9]

В Indy функция так и называется "Получить Заголовок" по-английски.


 
Novichok_New ©   (2007-02-19 16:48) [10]

Я правильно понимаю:

POP3.Connect; // подключение по протоколу POP3
POP3.RetrieveHeader(intIndex, IdMessage); //ТОЛЬКО ЗАГОЛОВОК ПИСЬМА :-)
POP3.Retrieve(1,IdMessage); // получение сообщения с body
POP3.Disconnect; // разрыв связи


???


 
Novichok_New ©   (2007-02-19 16:55) [11]

Если да, то из ниже перечисленного можно "выудить" из 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) [12]

Если да, то что из ниже перечисленного можно "выудить" из 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;


 
Dmitrij_K   (2007-02-19 23:07) [13]


> Novichok_New ©   (19.02.07 16:55) [12]

ЭТО ВОПРОС?
Вытянуть можно все что есть в заголовке сообщения



Страницы: 1 вся ветка

Текущий архив: 2007.03.11;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.029 c
15-1171455223
Kenny
2007-02-14 15:13
2007.03.11
Monitor


15-1171391468
maxmaxov
2007-02-13 21:31
2007.03.11
Sky Link problems


3-1166075069
Phoenix
2006-12-14 08:44
2007.03.11
Агрегирование с TClientDataSet


4-1162294775
dip63
2006-10-31 14:39
2007.03.11
Процедура по хуку клавиатуры вызывается два раза


15-1171606301
Loginov Dmitry
2007-02-16 09:11
2007.03.11
Ловушка для сишника MidStr()