libcurl: email

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
gopstop2007
✯ Ветеран ✯
Сообщения: 1702
Зарегистрирован: 25 Март 2009, 21:55
Благодарил (а): 9 раз
Поблагодарили: 4 раза

libcurl for Clarion

Сообщение gopstop2007 »

Игорь Столяров писал(а): 29 Сентябрь 2017, 11:29
К SMTP Вы и так не коннектитесь, это делает каждый раз при вызове метод SEND() ...
хотя, если bcc рассылается на стороне SMTP, отослал одно письмо с bcc: получателями и сервер сделал "грязную" работу, или я делаю работу(рассылку списком) за сервер, может рубануть за спам :?:
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
pansoft
Бывалый
Сообщения: 76
Зарегистрирован: 08 Август 2011, 11:37

libcurl for Clarion

Сообщение pansoft »

Добрый день всем,

Может кто поделится рабочим примером получения почты с сервера.
Сам запускаю пример, выдает ошибку 7 (Email List reading failed: Couldnt't connect to server)
Может прокси мешает?
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

libcurl for Clarion

Сообщение Дед Пахом »

Рабочий пример libcurl\examples\ReceiveMail\
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7329
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libcurl for Clarion

Сообщение Игорь Столяров »

pansoft писал(а): 29 Август 2018, 11:32Сам запускаю пример, выдает ошибку 7
Запускал тестовый пример почты ReceiveMail (давно) - всё прекрасно работало до получения списка сообщений.
Что касается PROXY - то это же Ваши местные прибамбасы, как здесь можно что-то советовать ?
Попробуйте включить и настроить опции для доступа CURL через PROXY - примеров на PHP полно.

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

CURLOPT_PROXY
CURLOPT_PROXYUSERNAME
CURLOPT_PROXYPASSWORD
и т.д.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7329
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libcurl for Clarion

Сообщение Игорь Столяров »

Добрый день !

Это снова я. И у меня вопросы … ;) По пунктам.

1. Спасибо за интересные новые методы вставки картинок в текст письма.

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

  AddEmbeddedImage(STRING pFilename, STRING pCid, <STRING pName>)  !forces to use 'text/html' content-type
  AltBody(STRING pBody)    !forces to use 'text/html' content-type
хоть, что-то заработало сразу с убогими кларионовскими WMF листами отчётов ... :)

2. Но дьявол, снова скрылся в деталях ...
Вставка картинки в текст, затирает собственно сам текст письма ... :(
Т.е. если выполнить:

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

   ...
   MyCurl.Body('Посылаю Вам 20 своих селфи топлес !')
   ...
   Loc:GUID = GetGUID() 
   MyCurl.AddEmbeddedImage(Loc:FileName,Loc:GUID)
   MyCurl.Body('<html><body><img src="cid:' & Clip(Loc:GUID) & '"/></body></html>')
   ...
   Loc:ErrorCode = MyCurl.Send()
То в тексте письма придут только картинки ... Не хорошо это.
Или я неправильно формирую письмо ?
Вопрос именно о тексте письма, а не названии картинки.
Заранее спасибо за наводку. :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

libcurl for Clarion

Сообщение RaFaeL »

Ну судя по примеру, нижнее .Body затирает верхнее, все логично )
Вообще структура HTML письма имеет "тело" минимум из трех частей - первая разводящая, вторая "текст" и третья "HTML", их надо заполнять независимо. В моей библиотеке для этого отдельные методы, по идее в curl тоже должны быть отдельные
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7329
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libcurl for Clarion

Сообщение Игорь Столяров »

RaFaeL писал(а): 31 Август 2018, 9:46вторая "текст" и третья "HTML"
Вот здесь что-то и не срастается ... Потому, что в LibCurl - либо текст, либо HTML ...
И как-то конечно хочется, что бы Curl.Body() была накопительной …
Вполне логичная схема формирования письма:

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

  MyCurl.Body('Вступление')
  MyCurl.Body('Глава 1')
  MyCurl.Body('Глава 2')
  MyCurl.Body('Эпилог')
  ...
  ! --- Вложение картинок
  MyCurl.AddEmbeddedImage(Loc:FileName,Loc:GUID)
  MyCurl.Body('<html><body><img src="cid:' & Clip(Loc:GUID) & '"/></body></html>')
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
RaFaeL
✯ Ветеран ✯
Сообщения: 1376
Зарегистрирован: 24 Март 2009, 17:59
Откуда: НН
Благодарил (а): 7 раз
Поблагодарили: 1 раз
Контактная информация:

libcurl for Clarion

Сообщение RaFaeL »

https://curl.haxx.se/libcurl/c/smtp-mime.html
Пример
B нем отдельные методы на каждую операцию
B libcurl по идее должны быть аналогичные
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7329
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libcurl for Clarion

Сообщение Игорь Столяров »

RaFaeL писал(а): 31 Август 2018, 11:21B нем отдельные методы на каждую операцию
Да ! В принципе, тоже самое, что и библиотеке Catalyst - сборка / разборка MIME сообщения c произвольным кол-вом разделов.
И каждый раздел может иметь свой тип данных (TEXT / HTML / ФАЙЛ ...), передаваемых внутри MIME пакета ...
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

libcurl for Clarion

Сообщение Дед Пахом »

Тут у вас какая-то путаница, попробую разъяснить.

Картинки в теле письма допускаются, если само тело письма написано на HTML; если тело письма просто текст, то картинки в него внедрить нельзя, можно прикрепить их к письму только как вложения.
Для тех почтовых клиентов, которые не умеют показывать HTML-письма, есть альтернативное тело письма (просто текст).
Пример письма с HTML и картинкой в нём, и вторым текстовым телом с прикреплённой (той же)
картинкой:

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

  curl.Body('<html><body><p>HTML content</p><img src="cid:logo"/><p>with embedded images.</p></body></html>')
  curl.AddEmbeddedImage('logo.png','logo')
  curl.AltBody('This is an alternative plain text. Embedded images will appear as attachments.')
RaFaeL писал(а): 31 Август 2018, 11:21https://curl.haxx.se/libcurl/c/smtp-mime.html
Пример
B нем отдельные методы на каждую операцию
B libcurl по идее должны быть аналогичные
Это появилось в v7.56, а у нас 7.52.
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7329
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libcurl for Clarion

Сообщение Игорь Столяров »

Дед Пахом писал(а): 02 Сентябрь 2018, 0:55Доступна v1.34, много изменений.
Можно простой вопрос ... (примеры разобрал, описание читал)
Правильно ли я понимаю:

1. TCurlMimeClass - это и есть формирование и отправка мультираздельных почтовых сообщений.

2. Новый класс TCurlMimeClass вообще никак не связан с TCurlMailClass.

3. Если мы формируем почтовое сообщение через TCurlMimeClass, то должны вручную делать всю работу
по настройке параметров сообщения через базовый TCurlHttpClass ?
(т.е. всё то, что раньше быстро и удобно делалось методами любезно предоставленного Вами TCurlMailClass)

4. Если п.3 - ошибочен, то как стыкуется создание MIME сообщения в TCurlMimeClass с его отправкой через TCurlMailClass ?

Заранее спасибо. Что бы хоть понять, в какую сторону копать … ;)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

libcurl for Clarion

Сообщение Дед Пахом »

Игорь Столяров писал(а): 03 Сентябрь 2018, 9:09Можно простой вопрос
Будем считать, что простой это №2? Тогда да, никак не связан.

Всё остальное мне непонятно, главным образом цель вопросов и желания что-то копать в тумане.
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7329
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libcurl for Clarion

Сообщение Игорь Столяров »

Дед Пахом писал(а): 03 Сентябрь 2018, 11:28главным образом цель вопросов
OK ! Цель простая:
Создать MIME сообщение из нескольких разделов (текст, HTML, файлы) и отправить через SMTP.

С созданием MIME сообщения - более или менее понятно. Буду пробовать по примеру на С.

1. Не понятно с отправкой сообщения. В примере идёт просто вызов Curl.SendRequest()
Предполагается, что сформировать заголовок сообщения и установить настройки отправки
(хост, порт, логин, пароль и т.д.) нужно вручную, как это делают методы класса TCurlMailClass ?

2. Вот такая конструкция, имеет право на жизнь ?

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

curl        TCurlMailClass     ! <<<--- !!!! ВОТ КЛЮЧЕВАЯ ЗАМЕНА
mime     TCurlMimeClass
part       curl_mimepart
res         CURLcode

  CODE

   Curl.Init()
   
   ! --- ФОРМИРОВАНИЕ ТУШКИ СООБЩЕНИЯ
   
   !Curl.Body(...)    ЗАМЕНЯЕМ НА
   
    mime.Init(curl)
    
    part = mime.AddPart()  ! Первый раздел MIME
    mime.SetData(part, 'This is the field data')
    mime.SetName(part, 'data')
    
    part = mime.AddPart()  ! Второй раздел MIME
    ...
    
    curl.SetMimePost(mime)  ! Записали MIME сообщение
    
    ! ----
    
   Curl.Server(...)    ! Устанавливаем параметры отправки
   Curl.Account(..)
   
   Curl.From(..)       ! Формируем шапку сообщения 
   Curl.Subject(...)
   Curl.AddRecipient(...)
   Curl.AddRecipient(...)
  
   res = Curl.Send()  ! Отправить почтовое сообщение
Я просто хочу понять концепцию применения и место нового класса TCurlMimeClass в LibCurl (Clarion) ...
Заранее спасибо ! :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

libcurl for Clarion

Сообщение Дед Пахом »

Игорь Столяров писал(а): 03 Сентябрь 2018, 12:57Создать MIME сообщение из нескольких разделов (текст, HTML, файлы) и отправить через SMTP.
Видимо, TCurlMailClass с этим не справляется, так?
Игорь Столяров писал(а): 03 Сентябрь 2018, 12:57В примере идёт просто вызов Curl.SendRequest()
Пример к почте не имеет отношения, это посылка данных через http (как будто заполнили форму и нажали Submit).

Ещё раз, что не так в TCurlMailClass? Не посылает письма? Посылает, но не то? Он делает то же, что Вы хотите (создаёт несколько mime-частей - для текста, html, вложений), просто это скрыто в коде методов. Body - одна часть, AltBody - другая, Attachments - 3-я, EmbeddedImages - 4-я.

Зачем всё делать вручную?
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7329
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libcurl for Clarion

Сообщение Игорь Столяров »

Дед Пахом писал(а): 03 Сентябрь 2018, 14:25Ещё раз, что не так в TCurlMailClass?
Затираются разделы:

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

 ...
   MyCurl.Body('СОБСТВЕННО ТЕКСТ ПИСЬМА')   ! Добавляем раздел с текстом
   ...
   Loc:GUID = GetGUID()         ! Добавляем раздел с вложенной картинкой
   MyCurl.AddEmbeddedImage(Loc:FileName,Loc:GUID)
   MyCurl.Body('<html><body><img src="cid:' & Clip(Loc:GUID) & '"/></body></html>')
   ...
   Loc:ErrorCode = MyCurl.Send()
То в тексте письма придут только картинки, без текста … :(

Дед Пахом писал(а): 03 Сентябрь 2018, 14:25(создаёт несколько mime-частей - для текста, html, вложений)
Как отправить e-mail из текста И html вложений ? Метод MyCurl.Body() создаёт только ОДИН раздел … :(
За теми кто отстал - не возвращаться. (С) Кодекс
Ответить