Форум » [x]Harbour » Почта Mail RU + hb_SendMail + SSL » Ответить

Почта Mail RU + hb_SendMail + SSL

Dima: А что б он был здоров. Получил сегодня месагу [pre2] Вы получили это письмо, т.к. для просмотра почты Mail.Ru используете почтовую программу (Outlook, The Bat! и т.п.). Мы постоянно работаем над улучшением безопасности Почты Mail.Ru. Поэтому в ближайшее время на POP3 и SMTP-серверах останется только безопасная авторизация через протокол SSL http://ru.wikipedia.org/wiki/SSL . В связи с этим вам необходимо внести изменения в настройки ваших почтовых клиентов. Мы уже подготовили для вас подробную инструкцию, которую вы можете найти по адресу https://help.mail.ru/mail-help/mailer/popsmtp Не волнуйтесь, вы успеете изменить настройки — почтовые программы будут работать с текущими настройками ещё в течение месяца. При возникновении каких-либо проблем при настройке, пожалуйста, обращайтесь в Службу поддержки, просто ответив на это письмо, или написав по адресу support@corp.mail.ru. Мы обязательно поможем! [/pre2] Аутглюк я перестроил согласно https://help.mail.ru/mail-help/mailer/moexp Работает. А вот как быть с отправкой почты из Harbour ? Ну порты я сменю а как авторизоваться через SSL ? В hb_SendMail и опции вроде нет такой или я не заметил ?

Ответов - 123, стр: 1 2 3 4 5 6 7 All

alkresin: Dima пишет: А вот как быть с отправкой почты из Harbour ? Ну порты я сменю а как авторизоваться через SSL ? В hb_SendMail и опции вроде нет такой или я не заметил ? Я не изучал внимательно это дело, но у меня создалось впечатление, что надо установить в .t. 20-й параметр - lTls.

Dima: alkresin Понял. Спасибо !

Dima: Попробовал и выпал на ошибку [pre2] Error BASE/1081 Operation not supported: TIPCLIENTPOP:new() Called from TIPCLIENT:NEW(0) Called from TIPCLIENTPOP:NEW(0) Called from HB_SENDMAIL(159) [/pre2] [pre2] IF cPopServer != NIL .AND. lPopAuth BEGIN SEQUENCE oUrl1 := TUrl():New( iif( lTLS, "pop3s://", "pop://" ) + cUser + ":" + cPass + "@" + cPopServer + "/" ) oUrl1:cUserid := StrTran( cUser, "&at;", "@" ) oPop := TIPClientPOP():New( oUrl1, xTrace ) // 159 строка IF oPop:Open() oPop:Close() ELSE lReturn := .F. ENDIF RECOVER lReturn := .F. END SEQUENCE ENDIF [/pre2] Как лечить ?


alkresin: Хмм... Может, это связано с вызовом функции tip_SSL() - она вызывается при инициализации объекта TIPClient - поставьте там что-нибудь, чтобы проверить. Вообще, должна быть подключена библиотека hbssl

Dima: alkresin пишет: Вообще, должна быть подключена библиотека hbssl Да у меня ее не было. Скачал и установил http://slproweb.com/download/Win32OpenSSL-1_0_1f.exe Собрал hbssl вот таким батником [pre2] set path=C:\MinGW\bin\ SET HB_WITH_OPENSSL=C:\OpenSSL-Win32\include c:\hb32mingw\bin\hbmk2 hbssl.hbp [/pre2] Полученные либы перенес в папку LIB с Harbour Стал пересобирать пример прицепив к нему еще и Hbssl.hbc Результат тот же. Что интересно не смог собрать ни один пример из Contrib\hbssl\tests во время сборки вот такая картинка [pre2] c:/hb32mingw/lib/win/mingw/libhbssl.a(ssl.o):ssl.c:(.text+0x38c7): undefined reference to `SSL_get_ciphers' c:/hb32mingw/lib/win/mingw/libhbssl.a(ssl.o):ssl.c:(.text+0x38d1): undefined reference to `sk_num' c:/hb32mingw/lib/win/mingw/libhbssl.a(ssl.o):ssl.c:(.text+0x38f9): undefined reference to `sk_value' c:/hb32mingw/lib/win/mingw/libhbssl.a(ssl.o):ssl.c:(.text+0x39c7): undefined reference to `SSL_get_client_CA_list' c:/hb32mingw/lib/win/mingw/libhbssl.a(ssl.o):ssl.c:(.text+0x39d1): undefined reference to `sk_num' c:/hb32mingw/lib/win/mingw/libhbssl.a(ssl.o):ssl.c:(.text+0x39f9): undefined reference to `sk_value' c:/hb32mingw/lib/win/mingw/libhbssl.a(ssl.o):ssl.c:(.text+0x3ab0): undefined reference to `SSL_load_client_CA_file' c:/hb32mingw/lib/win/mingw/libhbssl.a(ssl.o):ssl.c:(.text+0x3aba): undefined reference to `sk_num' и в конце C:\MinGW\bin\ld.exe: c:/hb32mingw/lib/win/mingw/libhbssl.a(ssl.o): bad reloc address 0x0 in section `.rdata' [/pre2]

alkresin: А вы переписали в доступное для компилятора/линкера место dll, которые прописаны в hbssl.hbc ?

Dima: alkresin Разобрался , мой косяк. Цеплял hbssl.hbc а его и не было в C:\hb32mingw\contrib\hbssl\hbssl.hbc. Папки такой не было совсем. Переписал из сырцов руками. Кроме того добавил в исходник строку REQUEST __HBEXTERN__HBSSL__ Заработало. Спасибо !!!

Dima: Все бы ни чего но новый прикол. Задача у меня MT , само приложение сжимаю с помощью UPX После того как сделал в нем доработку с HBSSL сжатое приложение не стартует. Вылазит виндовая месага. Ошибка при инициализации приложения (0xc0000005). Для выхода из приложения нажмите кнопку OK Если не сжимать то все нормально да и почта уходит с авторизацией SSL PS UPX 3.91w

Dima: Немного поигрался со сборкой. Если из исходника убрать строку REQUEST __HBEXTERN__HBSSL__ тогда сжатый EXE запускается нормально , но в этом случае почта по SSL уходить не будет. Куда копать не пойму.........

Dima: разобрался. скормил UPX опцию --compress-exports=0

Dima: Вопрос на последок. Отправляю из Harbour мыло без SSL и на это уходит меньше 2-х секунд То же мыло с SSL уходит за 1 минуту 28 секунд Как то можно ускорить отправку с SSL ? Если глянуть лог отправки то видно что тормоз не на самой отправке а на логировании. Как ускорить процесс пока не понял [pre2] 20140205-14:17:37 :INETERRORCODE( <pointer> ) >> 0 << 20140205-14:17:37 :INETRECVLINE( <pointer>, , 512 ) >> 250-8BITMIME << 20140205-14:17:37 :INETERRORCODE( <pointer> ) >> 0 << 20140205-14:17:37 :INETRECVLINE( <pointer>, , 512 ) >> 250 AUTH PLAIN LOGIN << 20140205-14:17:37 :INETERRORCODE( <pointer> ) >> 0 << 20140205-14:19:07 :INETRECVLINE( <pointer>, , 512 ) >> NIL << 20140205-14:19:07 :INETERRORCODE( <pointer> ) >> 0 << 20140205-14:19:07 :INETSENDALL( <pointer>, 12, AUTH LOGIN<cr><lf> ) >> 12 << [/pre2]

Dima: Роем дальше. Таймаут (nTimeOut) у меня стоит 90 000 (90 секунд) Поставил его вместо 20 секунд которые стояли изначально. Сделано это было намеренно так как большие письма не уходили если истекал таймаут (это уже обcуждалось в одной из тем на форуме). При чем без SSL не было ни каких тормозов с отправкой. Если отправлять c SSL то похоже что при авторизации прога тупо выжидает весь nTimeOut , это я проверил поиграв с параметром nTimeOut Где то вроде косячек в Hb_sendmail PS Вопрос. На что влияет nTimeOut ? Если он стоит 10 секунд а мыло будет уходить (так как большое) 30 секунд , мыло уйдет или нет ? Что то я запутался чуть уже

Dima: Проблему решил , при чем сильно глубоко не стал копать и решил все на уровне Hb_sendmail , всего одной строкой. Если кому нужно , пишите. Дам подробности. PS Тестил на мыле размером в 10 метров.

Dima: Странно однако. У меня все работает а у клиента при запуске приложения валит ошибка (0xc015002) Отключил временно в исходнике REQUEST __HBEXTERN__HBSSL__ у него запустилось. Не понял в чем дело ? У кого то было такое ?

PSP: Dima пишет: У меня все работает а у клиента при запуске приложения валит ошибка (0xc015002) Видимо, у клиента винда не обновляется. http://social.msdn.microsoft.com/Forums/vstudio/en-US/5aa569ae-72cb-42ab-abdc-bd455504094f/0xc015002-error-application-failed-to-initialize-properly

Dima: PSP Спасибо но не помогло

Dima: PSP Скачал от сюда http://slproweb.com/products/Win32OpenSSL.html Заработало ;)

Dima: а тормоз при отправке по SSL починил так. До первого DO WHILE .T. есть строка oInmail:nConnTimeout :=nTimeOut В этом случае прога будет тупо выжидать весь nTimeOut при логировании. Заменил эту строку на следующую oInmail:nConnTimeout :=3000

PSP: Dima пишет: Скачал от сюда http://slproweb.com/products/Win32OpenSSL.html Заработало ;) Ну и гуд! :)

Softlog86: Кто-нибудь может указать алгоритм действий для изменения работы для отправки почты по SSL (MAIL.RU) ? HARBOUR 3.2.0dev (r1401211941)



полная версия страницы