!** libcurl for Clarion v1.44
!** 07.09.2019
!** mikeduglas...
libcurl: email
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Дед Пахом
- Старичок
- Сообщения: 3137
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 11 раз
- Поблагодарили: 32 раза
- Контактная информация:
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
- Ветеран
- Сообщения: 910
- Зарегистрирован: 20 Июль 2005, 14:53
- Откуда: Volgograd, Russia
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
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
- Дед Пахом
- Старичок
- Сообщения: 3137
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 11 раз
- Поблагодарили: 32 раза
- Контактная информация:
libcurl for Clarion
Давайте весь код, от curl.Init() до curl.Send(), по фрагменту ничего сказать нельзя.
С уважением, ДП
- morkovin
- Ветеран
- Сообщения: 910
- Зарегистрирован: 20 Июль 2005, 14:53
- Откуда: Volgograd, Russia
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
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
- Дед Пахом
- Старичок
- Сообщения: 3137
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 11 раз
- Поблагодарили: 32 раза
- Контактная информация:
libcurl for Clarion
Код: Выделить всё
curl.SetSSLVersion(CURL_SSLVERSION_TLSv1) !- или другая CURL_SSLVERSION_xxx константа
С уважением, ДП
- morkovin
- Ветеран
- Сообщения: 910
- Зарегистрирован: 20 Июль 2005, 14:53
- Откуда: Volgograd, Russia
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
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
- Дед Пахом
- Старичок
- Сообщения: 3137
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 11 раз
- Поблагодарили: 32 раза
- Контактная информация:
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
- Ветеран
- Сообщения: 910
- Зарегистрирован: 20 Июль 2005, 14:53
- Откуда: Volgograd, Russia
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
- Дед Пахом
- Старичок
- Сообщения: 3137
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 11 раз
- Поблагодарили: 32 раза
- Контактная информация:
libcurl for Clarion
Странно, у меня моментально всё отрабатывает.
Тем не менее, попробуйте подставить вместо фейковых свои атрибуты Account и From.
С уважением, ДП
- morkovin
- Ветеран
- Сообщения: 910
- Зарегистрирован: 20 Июль 2005, 14:53
- Откуда: Volgograd, Russia
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
- morkovin
- Ветеран
- Сообщения: 910
- Зарегистрирован: 20 Июль 2005, 14:53
- Откуда: Volgograd, Russia
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация:
- Дед Пахом
- Старичок
- Сообщения: 3137
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 11 раз
- Поблагодарили: 32 раза
- Контактная информация:
libcurl for Clarion
А, он у Вас по протоколу http пытается соединиться. Добавьте вызов curl.SetDefaultProtocol('smtp') после Init(), или поставьте libcurl поновее, там этот вызов зашит в Init().
С уважением, ДП
- morkovin
- Ветеран
- Сообщения: 910
- Зарегистрирован: 20 Июль 2005, 14:53
- Откуда: Volgograd, Russia
- Благодарил (а): 2 раза
- Поблагодарили: 3 раза
- Контактная информация: