!** libcurl for Clarion v1.44
!** 07.09.2019
!** mikeduglas...
libcurl: email
Модератор: Дед Пахом
					Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Основной тред
	При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Основной тред
- Дед Пахом
 - Старичок
 - Сообщения: 3346
 - Зарегистрирован: 07 Июль 2005, 16:51
 - Откуда: Москва, Россия
 - Благодарил (а): 20 раз
 - Поблагодарили: 56 раз
 - Контактная информация:
 
libcurl for Clarion
Ну не знаю, вот код метода:
			
			
									
						Код: Выделить всё
TCurlMailClass.Reset          PROCEDURE()
  CODE
  SELF.FreeRecipients()
  SELF.FreeAttachments()
  SELF.FreeCustomHeaders()
  
  CLEAR(SELF.mailsubject)
  CLEAR(SELF.mailbody)
  CLEAR(SELF.mailaltbody)
  SELF.bodyContentType = 'text/plain'
  SELF.bodyCharset = 'UTF-8'
  PARENT.Reset()
С уважением, ДП
			
						- morkovin
 - Ветеран
 - Сообщения: 937
 - Зарегистрирован: 20 Июль 2005, 14:53
 - Откуда: Volgograd, Russia
 - Благодарил (а): 12 раз
 - Поблагодарили: 4 раза
 - Контактная информация:
 
libcurl for Clarion
С11, abc
Не могу справиться с TSL
Вот картинка из Outlook В Outlook всё работает.
Вот фрагмент из моей проги
Получаю ошибку " failed writing received data to disk/application".  Чувствую, что-то не так с протоколами.Но что?
			
			
									
						Не могу справиться с TSL
Вот картинка из Outlook В Outlook всё работает.
Вот фрагмент из моей проги
Код: Выделить всё
        OF 'mail.volganet.ru'
            curl.Server('mail.volganet.ru', 587)
            curl.Account(EmailUser, EmailPsw)
            curl.From(EmailFrom)
            curl.AddRecipient('miasoft@mail.ru') ! CLIP(ppp:email)) !to/cc/bcc
            curl.UseSSL(CURLUSESSL_ALL)                           ! <---- ???
            curl.SetSSLVerifyPeer(FALSE)  !curl --insecure    !<---- ???
 WBR, morkovin
			
						- Дед Пахом
 - Старичок
 - Сообщения: 3346
 - Зарегистрирован: 07 Июль 2005, 16:51
 - Откуда: Москва, Россия
 - Благодарил (а): 20 раз
 - Поблагодарили: 56 раз
 - Контактная информация:
 
libcurl for Clarion
Давайте весь код, от curl.Init() до curl.Send(), по фрагменту ничего сказать нельзя.
			
			
									
						С уважением, ДП
			
						- morkovin
 - Ветеран
 - Сообщения: 937
 - Зарегистрирован: 20 Июль 2005, 14:53
 - Откуда: Volgograd, Russia
 - Благодарил (а): 12 раз
 - Поблагодарили: 4 раза
 - Контактная информация:
 
libcurl for Clarion
Использую local extension LibCurl,  поэтому Init() без моего участия
а код вот:
как задать TLS?
			
			
									
						а код вот:
Код: Выделить всё
    CASE LOWER(CLIP(EmailServer))
        OF 'smtp.mail.ru'      ! SSL - работает
            curl.Server('smtp.mail.ru', EmailPort)
            curl.Account(EmailUser, EmailPsw)
            curl.From(EmailFrom)
            curl.AddRecipient( CLIP(ppp:email)) !to/cc/bcc
            curl.UseSSL(CURLUSESSL_ALL)
            curl.SetSSLVerifyPeer(FALSE)  !curl --insecure
            	
        OF 'smtp.gmail.com'
            curl.Server('smtp.gmail.com', 587)
            curl.Account(EmailUser, EmailPsw)
            curl.From(EmailFrom)
            curl.AddRecipient( CLIP(ppp:email)) !to/cc/bcc
            curl.UseSSL(CURLUSESSL_ALL)
            curl.SetSSLVerifyPeer(FALSE)  !curl --insecure
        OF 'smtp.yandex.ru'     ! SSL - работает
            curl.Server('smtp.yandex.ru', EmailPort)
            curl.Account(EmailUser, EmailPsw)
            curl.From(EmailFrom)
            curl.AddRecipient( CLIP(ppp:email)) !to/cc/bcc
            curl.UseSSL(CURLUSESSL_ALL)
            curl.SetSSLVerifyPeer(FALSE)  !curl --insecure            
            
        OF 'mail.volganet.ru'     ! TLS - не работает
            curl.Server('mail.volganet.ru', 587)
            curl.Account(EmailUser, EmailPsw)
            curl.From(EmailFrom)
            curl.AddRecipient('mia@mail.ru') ! CLIP(ppp:email)) !to/cc/bcc
            curl.UseSSL(CURLUSESSL_ALL)
            curl.SetSSLVerifyPeer(FALSE)  !curl --insecure
 
    END
    
    Glo:EmailMessageText='Обращение № '& ZVK:ID &'<13,10>'&|
            'Дата: '&format(ZVK:DateZapoln,@d06.) &'<13,10>'&|
            'Тема: '&clip(ZVK:Vid)&'<13,10>'&|
            'Есть температура: '&CHOOSE(ZVK:IsT,'да','нет')&'<13,10>'&|   
            'ФИО: '&clip(ZVK:F)&' '&clip(ZVK:I)&' '&clip(ZVK:O)&'<13,10>'&|
            'Д. рожд.: '&format(ZVK:GodRojd, @D06.) &'<13,10>'&|
            'Город: '&clip(ZVK:City)  &'<13,10>'&| 
            'Район: '&clip(ZVK:Raion)&'<13,10>'&| 
            'Улица: '&clip(ZVK:Street) &'<13,10>'&| 
            'Дом: '&CLIP(ZVK:Dom)  &'<13,10>'&|  
            'кв.: '&CLIP(ZVK:kv)  &'<13,10>'&|
            'ТЕЛ.: '&CLIP(ZVK:Phone)  &'<13,10>'&|    
            'Место работы: '&CLIP(ZVK:Work)  &'<13,10>'&|
            'Доп.сведения: '&CLIP(ZVK:Note)  &'<13,10>'&|    
            'Отправлено: '&format(today(), @d06.)&'  '& format(CLOCK(),@t1)    
  curl.Subject('CALL-центр: Обращение № '&ZVK:ID)
  curl.Body(CLIP(Glo:EmailMessageText))
  curl.AddAttachment(Fname)
  !connection timeout (seconds)
  curl.SetOpt(CURLOPT_CONNECTTIMEOUT, 130)
  res = curl.Send()
WBR, morkovin
			
						- Дед Пахом
 - Старичок
 - Сообщения: 3346
 - Зарегистрирован: 07 Июль 2005, 16:51
 - Откуда: Москва, Россия
 - Благодарил (а): 20 раз
 - Поблагодарили: 56 раз
 - Контактная информация:
 
libcurl for Clarion
Код: Выделить всё
curl.SetSSLVersion(CURL_SSLVERSION_TLSv1)  !- или другая CURL_SSLVERSION_xxx константаС уважением, ДП
			
						- morkovin
 - Ветеран
 - Сообщения: 937
 - Зарегистрирован: 20 Июль 2005, 14:53
 - Откуда: Volgograd, Russia
 - Благодарил (а): 12 раз
 - Поблагодарили: 4 раза
 - Контактная информация:
 
libcurl for Clarion
Код: Выделить всё
CURL_SSLVERSION_TLSv1         EQUATE(1) !/* TLS 1.x */
CURL_SSLVERSION_SSLv2         EQUATE(2)
CURL_SSLVERSION_SSLv3         EQUATE(3)
CURL_SSLVERSION_TLSv1_0       EQUATE(4)
CURL_SSLVERSION_TLSv1_1       EQUATE(5)
CURL_SSLVERSION_TLSv1_2       EQUATE(6)
CURL_SSLVERSION_TLSv1_3       EQUATE(7)Может надо это как-то вставить
Код: Выделить всё
CURLOPT_TLSAUTH_USERNAME      EQUATE(204 + CURLOPTTYPE_STRINGPOINT)     !Set a username for authenticated TLS
CURLOPT_TLSAUTH_PASSWORD      EQUATE(205 + CURLOPTTYPE_STRINGPOINT)     !Set a password for authenticated TLS
CURLOPT_TLSAUTH_TYPE          EQUATE(206 + CURLOPTTYPE_STRINGPOINT)     !Set authentication type for authenticated TLS
WBR, morkovin
			
						- Дед Пахом
 - Старичок
 - Сообщения: 3346
 - Зарегистрирован: 07 Июль 2005, 16:51
 - Откуда: Москва, Россия
 - Благодарил (а): 20 раз
 - Поблагодарили: 56 раз
 - Контактная информация:
 
libcurl for Clarion
Вызовите эту функцию как есть, без изменений. Должны получить ошибку "Failure when receiving data from the peer".
			
			
									
						Код: Выделить всё
Send::Morkovin                PROCEDURE()
curl                            TCurlMailClass
res                             CURLcode
  CODE
  curl.Init()
!  curl.SetDefaultProtocol('smtp')
  curl.Server('mail.volganet.ru', 587)
  curl.Account('md@volganet.ru', '12345')
  curl.From('M.D. <md@volganet.ru>')
  curl.AddRecipient('mia@mail.ru') !to/cc/bcc
  
  curl.UseSSL(CURLUSESSL_ALL)
  curl.SetSSLVersion(CURL_SSLVERSION_TLSv1)
  curl.SetSSLVerifyPeer(FALSE)  !curl --insecure
  curl.SetSSLVerifyHost(FALSE)  !curl --insecure
  
  curl.Subject('TEST')
  curl.Body('TEST')
  res = curl.Send()
  
  IF res = CURLE_OK
    MESSAGE('Email sent', 'SendMail', ICON:Asterisk)
  ELSE
    MESSAGE('Send failed: '& curl.StrError(res), 'SendMail', ICON:Exclamation)
  END
С уважением, ДП
			
						- morkovin
 - Ветеран
 - Сообщения: 937
 - Зарегистрирован: 20 Июль 2005, 14:53
 - Откуда: Volgograd, Russia
 - Благодарил (а): 12 раз
 - Поблагодарили: 4 раза
 - Контактная информация:
 
libcurl for Clarion
Да, получил эту ошибку через минуты 2-3Дед Пахом писал(а): 03 Ноябрь 2020, 17:15 Должны получить ошибку "Failure when receiving data from the peer".
WBR, morkovin
			
						- Дед Пахом
 - Старичок
 - Сообщения: 3346
 - Зарегистрирован: 07 Июль 2005, 16:51
 - Откуда: Москва, Россия
 - Благодарил (а): 20 раз
 - Поблагодарили: 56 раз
 - Контактная информация:
 
libcurl for Clarion
Странно, у меня моментально всё отрабатывает.
Тем не менее, попробуйте подставить вместо фейковых свои атрибуты Account и From.
С уважением, ДП
			
						- morkovin
 - Ветеран
 - Сообщения: 937
 - Зарегистрирован: 20 Июль 2005, 14:53
 - Откуда: Volgograd, Russia
 - Благодарил (а): 12 раз
 - Поблагодарили: 4 раза
 - Контактная информация:
 
- morkovin
 - Ветеран
 - Сообщения: 937
 - Зарегистрирован: 20 Июль 2005, 14:53
 - Откуда: Volgograd, Russia
 - Благодарил (а): 12 раз
 - Поблагодарили: 4 раза
 - Контактная информация:
 
- Дед Пахом
 - Старичок
 - Сообщения: 3346
 - Зарегистрирован: 07 Июль 2005, 16:51
 - Откуда: Москва, Россия
 - Благодарил (а): 20 раз
 - Поблагодарили: 56 раз
 - Контактная информация:
 
libcurl for Clarion
А, он у Вас по протоколу http пытается соединиться. Добавьте вызов curl.SetDefaultProtocol('smtp') после Init(), или поставьте libcurl поновее, там этот вызов зашит в Init().
			
			
									
						С уважением, ДП
			
						- morkovin
 - Ветеран
 - Сообщения: 937
 - Зарегистрирован: 20 Июль 2005, 14:53
 - Откуда: Volgograd, Russia
 - Благодарил (а): 12 раз
 - Поблагодарили: 4 раза
 - Контактная информация:
 
libcurl for Clarion
Ура! Спасибо! Всё заработало!Дед Пахом писал(а): 03 Ноябрь 2020, 18:53 А, он у Вас по протоколу http пытается соединиться. Добавьте вызов curl.SetDefaultProtocol('smtp') после Init()
WBR, morkovin
			
						