On-line: tnsr2, гостей 0. Всего: 1 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 101
Зарегистрирован: 06.02.07
ссылка на сообщение  Отправлено: 14.11.09 19:14. Заголовок: получение почты из Harbour-программы


Нет ли у кого опыта получения почты с аттачами из Harbour-программы?

DeleteEmail и CheckMailBox в SAMPLES смотрел, на старте помогло, но... в там используемом классе "Socket" (как понял, во всяком случае) плохо с работой с аттачами... а мне-то как раз с ними работать и надо.

Решил пользовать классы из библиотеки TIP.LIB (ранее HBTIP вроде бы она была), т.е. tURL, TIpClientPop... но с документацией по ним беда (т.е. фактически нету). Вот и разбираюсь постепенно (а поразобравшись - опубликую "накопленный опыт" или как наглядный пример, или как нормальное описание, или как то и другое)...

Стоит такая задача автоматизации (как раз в разрезе "свиняче-гриппозной" эпидемии) (и слепить надо довольно срочно, аж к понедельнику-вторнику, т.е. к 16-17.11.09 - собственно, все остальное ясно как делать, кроме "грамотной" работы с почтовым сервером):

1) наши больницы (Свердловская область 300-400 шт.) будут слать нам (на определенный и им известный адрес) КАЖДЫЙ день по письму, к которому приаттачено 4 XLS-ки (к примеру, для больницы с кодом "015" это будут "a015.xls", "b015.xls", "c015.xls", "d015.xls") с данными, сколько и какого народу заболело-лечится-померло и пр.

2) отчетный период - с 11:00 до 11:00 (т.е. после 11:00 забираем все, что накопилось в ящике "Входящие" на мэйл-сервере - и пусть кидают снова; а мы тем временем - уже другой прогой, это не моя забота - суммируем все по области и высылаем сводку в Минздрав).

3) моей проге надо:

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

Небольшой пример, что уже получается:
Скрытый текст

Кто в данной тематике продвинут - подскажите, пожалуйста. И срочно!

Пользую HMG Ext 1.7.75-76 Harbour 2.0.0beta3 (Rev.12849)

Помогшему (помогшим) - антигриппозную маску в подарок! :)

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 70 , стр: 1 2 3 4 All [только новые]







Пост N: 328
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 02.03.16 15:15. Заголовок: Извините за тон уваж..


Извините за тон уважаемые господа... и спасибо за посильную помощь!

Задача по примеру инструкции казалась легкой, о оказалось "как обычно". Видимо нет сейчас времени глубоко изучать и вникать - отложу задачу до "лучших" времен

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6259
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.01.17 19:07. Заголовок: AndreyZh пишет: oUr..


AndreyZh пишет:

 цитата:
oUrl := tURL():New( "pop://poseydon2000solprod@yandex.ru:****@pop.yandex.ru" )


тут нужен pop3s

Тоже стал разбираться со чтением почты , чекал на mail.ru
Не знаю как на яше но на майл ру логин нужно передавать без @mail.ru

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6268
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 31.01.17 15:05. Заголовок: Непонятная порча с ч..


Непонятная порча с чтением темы письма , если оно отправлено с мобилы.
В теме забивали *SOS# , читаю в Harbour и получаю
=?UTF-8?B?KlNPUyM=?=
Если отправлять с компа с такой же темой , то получаю в теме *SOS#
Не пойму как такое может быть...

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6269
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 31.01.17 15:29. Заголовок: OnLine декодер распо..


OnLine декодер распознал однако

Как теперь в Harbour раскодировать ?

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6270
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 31.01.17 16:21. Заголовок: Вроде понял как Нужн..


Вроде понял как
Нужно проанализировать строку на предмет (по шаблону) =?UTF-8?B?
Если такая строка есть , то вырезаем ее и после остатку строки делаем hb_base64Decode

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1408
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 31.01.17 21:38. Заголовок: Dima пишет: =?UTF-8..


Dima пишет:

 цитата:
=?UTF-8?B?
Если такая строка есть , то вырезаем ее и после остатку строки делаем hb_base64Decode



Не совсем так.

=?UTF-8?B?KlNPUyM=?=

В этой теме был разбор похожей строки.
Сначала отбрасываем то, что выделенно красным. Потом смотрим в какой кодировке указана тема (UTF-8)
Потом упакована ли строка (B - base64, для utf8 упаковка производится всегда)

Дальше вырезаем строку и декодируем/транслируем в соотв. кодировку.


Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6271
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 31.01.17 22:16. Заголовок: Петр Сделал так ..


Петр
Сделал так
 
if hb_RegexHas('[=]\?[A-Z0-9\-]+\?[A-Z]{1}+\?' ,oPop:getSubject(i) )
kk:=hb_regexSplit( '[=]\?[A-Z0-9\-]+\?[A-Z]{1}+\?', oPop:getSubject(i) , , ,1)
а далее разбираю массив
+ на нужном элементе
result:=hb_base64Decode( kk[JJ] )
тема всегда на English
endif


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1409
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 31.01.17 22:45. Заголовок: По моему это можно у..


По моему это можно упростить

Материал по теме

Если English, то charset можно игнорировать;
декодировать нужно, только если encoding == "B";
от регулярных выражений можно отказаться, а можно и не отказываться




Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6272
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 31.01.17 23:37. Заголовок: Петр Благодарю за п..


Петр
Благодарю за подсказку !

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 6273
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 01.02.17 10:00. Заголовок: Петр пишет: от регу..


Петр пишет:

 цитата:
от регулярных выражений можно отказаться


Верно , так даже проще
 
if hb_LeftEq(tema,'=?UTF-8?B?') .and. right(tema,2)=='?='
tema:=hb_base64Decode(substr(tema,11,len(tema)-12))
endif



Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 70 , стр: 1 2 3 4 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 676
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет