Получение почты по IMAP (Synapse.ImapSend)

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Получение почты по IMAP (Synapse.ImapSend)

Сообщение alaken » 06.02.2012 09:53:04

Доброго времени суток.
Интересует возможность получения почты по SMTP, каким компонентом это можно реализовать, если не затруднит с примерами кода.
Стоит задача получения почты с вложением, почтовый сервер - MS Exchange Server авторизация доменная.
Последний раз редактировалось alaken 13.02.2012 15:15:21, всего редактировалось 1 раз.
alaken
постоялец
 
Сообщения: 221
Зарегистрирован: 18.02.2010 09:02:13

Re: Получение почты по SMTP

Сообщение Padre_Mortius » 06.02.2012 10:49:39

alaken, буду не оригинален. Поиск по данному форуму может даже дать готовые примеры.
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Получение почты по SMTP

Сообщение leo_bsv » 06.02.2012 10:51:23

если что мы даже поискали за вас :wink:
Аватара пользователя
leo_bsv
постоялец
 
Сообщения: 276
Зарегистрирован: 04.08.2010 16:26:10
Откуда: Йошкар-Ола

Re: Получение почты по SMTP

Сообщение Mr.Smart » 06.02.2012 11:02:04

alaken писал(а):возможность получения почты по SMTP

Возможности НЕТ! Так как данный протокол, ТОЛЬКО, для передачи почты :wink:
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Получение почты по SMTP

Сообщение Padre_Mortius » 06.02.2012 11:05:24

Mr.Smart, ТС просто перепутал протоколы
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Получение почты по SMTP

Сообщение alaken » 06.02.2012 11:19:37

Mr.Smart писал(а):
alaken писал(а):возможность получения почты по SMTP

Возможности НЕТ! Так как данный протокол, ТОЛЬКО, для передачи почты :wink:

Да собственно я слукавил, простите.
Задача все еще актуальна - получение почты любым доступным способом (сервер MS Excahge)

Вот нечто похожее что мне нужно но тут используется Indy компоненты, может synapse или inet что то подобное умеют?
alaken
постоялец
 
Сообщения: 221
Зарегистрирован: 18.02.2010 09:02:13

Re: Получение почты по SMTP

Сообщение Padre_Mortius » 06.02.2012 11:56:27

synapce точно умеет
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: Получение почты по SMTP

Сообщение alaken » 06.02.2012 13:08:57

ткните носом пожалуйста.
в synapse нашел только модуль imapsend (
alaken
постоялец
 
Сообщения: 221
Зарегистрирован: 18.02.2010 09:02:13

Re: Получение почты по SMTP

Сообщение SAK » 06.02.2012 13:22:30

pop3send
SAK
постоялец
 
Сообщения: 158
Зарегистрирован: 18.02.2006 00:45:14
Откуда: Тим

Re: Получение почты по SMTP

Сообщение vada » 06.02.2012 14:34:31

Получить почту можно по IMAP, POP2, POP3 (может еще чего есть я не знаю), а SMTP он для отправки почты.

Вывод - не получится.

ЗЫ. Mr.Smart опередил :)
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Получение почты по SMTP

Сообщение alaken » 07.02.2012 10:04:36

SAK писал(а):pop3send

Спасибо, это то, что нужно.

И снова вопрос, как менять статус письма на "прочтено"?

Добавлено спустя 6 часов 21 минуту 13 секунд:
гугление по протоколу pop3 показало, что он не работает со статусами сообщений.
То, что мне нужно так это imapsend, но соединиться с сервером не получается, делал все по аналогии с pop3send.

Код: Выделить всё
var
   imapsnd: TImapSend;
   n: integer;
   sl: TStringList;
begin
   sl := TStringList.Create;
   imapsnd := TImapSend.Create;
   //imapsnd.
   imapsnd.Username := 'loginname';
   imapsnd.Password := 'password';
   imapsnd.TargetHost := 'serverhost';
   AddToRecieve( 'Соединение с сервером...' );
   if imapsnd.Login then // <- результат false
   begin

     Memo1.Clear;
     // get the folder list into ListBox1
     AddToRecieve( 'Получение списока папок.' );
     imapsnd.List('', Listbox1.Items);
     // select the Inbox
     AddToRecieve( 'Выделяем inbox...' );
     if imapsnd.SelectFolder('inbox') then
     begin
       // loop through the items
       for n := 1 to imapsnd.SelectedCount do
       begin
         // get each message's header
         if imapsnd.FetchHeader(n, sl) then
         begin
           // and append them to a TMemo
           Memo1.Lines.AddStrings(sl);
           Memo1.Lines.Append('');
         end;
       end;
       imapsnd.CloseFolder;
     end;
     imapsnd.Logout;
   end
   else
       AddToRecieve( 'Соединение с сервером не установлено' );


   imapsnd.Free;
   sl.Free;


в какую сторону копать, где смотреть ошибку соединения?
alaken
постоялец
 
Сообщения: 221
Зарегистрирован: 18.02.2010 09:02:13

Re: Получение почты по SMTP

Сообщение alexey38 » 08.02.2012 05:06:12

Я для отправки использовал Mapi. Есть функции: MAPILogon, MAPISendMail, MAPILogoff. Должно быть и на прием, но мне было не нужно.
Эта API работает с почтовым клиентом по умолчанию, т.е. отправленные ее письма находятся в отправленных в установленной на компе почтовой программе.
Статус прочтено возможно Вы рассматриваете как раз в клиенте.

А если на сервере, то только через IMAP, но нужно, чтобы сам сервер его поддерживал. Да и технология работы другая. Нужно вначале в почтовом клиенте понять как работает ваша почта.
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

Re: Получение почты по SMTP

Сообщение alaken » 08.02.2012 07:48:20

alaken писал(а):где смотреть ошибку соединения?

Код: Выделить всё
imapsnd.ResultString

Выдает: "S2 BAD Command received in Invalid state."
Ситуация яснее не стала...

alexey38 писал(а):А если на сервере, то только через IMAP, но нужно, чтобы сам сервер его поддерживал. Да и технология работы другая. Нужно вначале в почтовом клиенте понять как работает ваша почта.

Почтовый сервер MS Exchange Server
Клиент MS Outlook работает по imap авторизация доменная.
alaken
постоялец
 
Сообщения: 221
Зарегистрирован: 18.02.2010 09:02:13

Re: Получение почты по SMTP

Сообщение alaken » 13.02.2012 15:11:17

Гугление по строке "BAD Command received in Invalid state" вывело на решение: сообщение 1, сообщение 2.

мои попытки установить параметры ничего не дали, а как выставить нужный порт я вообще не нашел.
Код: Выделить всё

...
var
   IMAPSnd: TImapSend;
begin
   IMAPSnd := TImapSend.Create;
   IMAPSnd.AutoTLS := True;
   IMAPSnd.FullSSL := True;
...


проблема до сих пор актуальна, прошу помощи.
alaken
постоялец
 
Сообщения: 221
Зарегистрирован: 18.02.2010 09:02:13

Re: Получение почты по IMAP (Synapse.ImapSend)

Сообщение Ism » 14.02.2012 01:54:51

Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

След.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 221

Рейтинг@Mail.ru
cron