libcurl: email

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

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

libcurl: email

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

Подскажите пожалуйста: имею желание отправить несколько отдельных писем разным получателям с разными файлами.
Тема и текст письма легко меняется, а как очистить список получателей и файлов ?
Хотел сделать, вот так:

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

   Curl.MailTo.Free()
   Free(Curl.Attachments)
но это закрытые (PRIVATE) данные, да и не уверен я что так правильно ... :( Скорее всего, я чего-то не понимаю.
Есть ли какой-нибудь сброс данных текущего сообщения ? Не инициализировать же каждый раз класс заново ... :(

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

libcurl for Clarion

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

Сброс не предусмотрен. Проще всего написать процедуру отправки письма, которую вызывать в цикле. Типа

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

SendMail procedure(server, port, user, pwd, body, attachments...)
curl  TCurlMailClass
  code
  curl.Init()
  curl.Server(server, port)
  !... 
  curl.Send()
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libcurl for Clarion

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

Спасибо, сейчас попробую ...
Я делал вот так и не получилось:

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

code
  Loop ! По списку получателей
    curl.Init()
    curl.Server(server, port)
    !... 
    curl.Send()
  end
А вообще можно как-то реинициализировать Curl ? Curl.Kill() - не получилось ...
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

libcurl for Clarion

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

Игорь Столяров писал(а): А вообще можно как-то реинициализировать Curl ? Curl.Kill() - не получилось ...
Ну разве что объявить curl как ссылку &TCurlMailClass и делать NEW в начале цикла, DISPOSE в конце.
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libcurl for Clarion

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

Прекрасно работают оба способа (через отдельную процедуру и ссылку).
Мне вариант со ссылкой как-то понятней и есть гарантия, что память возвращена, а не подвисла где-то в закромах cURL ... :)

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

libcurl for Clarion

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

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

libcurl for Clarion

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

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

libcurl for Clarion

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

Дед Пахом писал(а): curl.AddAttachment(......., 'win1251')
Спасибо за наводку ! :) Действительно, вот такой вариант решает проблему с русскими именами файлов в сообщении:

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

MyCurl.AddAttachment('c:\Любить по русски.doc',,'Windows-1251')
Кстати, еще одно "открытие" (для меня) при работе с почтой через LibCur (сURL) - к имени хоста лучше
ВСЕГДА приклеивать протокол, тогда работает везде и без проблем. Что-то вроде:

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

  If SSL = True Or Port = 465
     Host = 'smtps://' & Clip(Host)
     MyCurl.UseSSL(CURLUSESSL_ALL)
  else
     Host = 'smtp://'  & Clip(Host)
  end
  MyCurl.Server(Host,Port)
  .....
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libcurl for Clarion

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

Добрый день !

Вопросик имею спросить. :)
А можно (как-то) в TCurlMailClass включать запрос на уведомление о прочтении отправляемого e-mail ?

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

libcurl for Clarion

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

Игорь Столяров писал(а): А можно (как-то) в TCurlMailClass включать запрос на уведомление о прочтении отправляемого e-mail ?
Если это возможно сделать через curl, то почти наверняка возможно и через libcurl. Но я что-то не могу найти в интернете способ.
С уважением, ДП
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

libcurl for Clarion

Сообщение Admin »

Добавить в письмо, в заголовок две строки:

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

X-Confirm-Reading-To: mixer@clarionlife.net 
Disposition-Notification-To: mixer@clarionlife.net
Уведомления:
о прочтении
и о доставке
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libcurl for Clarion

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

С теорией я вроде разобрался. cURL здесь не причем.
Нужна управляемая вставка в метод создания заголовка сообщения, что-то вроде:

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

TCurlMailClass.CreateHeader ...
   ...
   If Self.Notice then Mail.AddLine('Disposition-Notification-To: ' & CLIP(SELF.mailfrom)).
Ну и конечно, проверить ... ;)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3131
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

libcurl for Clarion

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

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

libcurl for Clarion

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

Admin писал(а): Добавить в письмо, в заголовок две строки:

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

X-Confirm-Reading-To: mixer@clarionlife.net 
Disposition-Notification-To: mixer@clarionlife.net
Уведомления:
о прочтении
и о доставке
Интересно получается... Я пользуюсь 2мя провайдерами - yandex и gmail. Через libcurl ни один из них не реагирует ни на Disposition-Notification-To, ни на X-Confirm-Reading-To, ни на признанный устаревшим Return-Receipt-To. Вобщем-то ничего странного, в спецификации написано, что провайдер вправе полностью игнорировать эти строки.
Далее. С гугла послать письмо с уведомлением нельзя (можно с установленной платной приблудой). С яндекса можно, и уведомление приходит, но в заголовке письма ни Disposition-Notification-To, ни X-Confirm-Reading-To, ни Return-Receipt-To нет.
С уважением, ДП
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

libcurl for Clarion

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

Дед Пахом писал(а): С гугла послать письмо с уведомлением нельзя
Значит это уже отмирающий рудимент SMTP .... :(
За теми кто отстал - не возвращаться. (С) Кодекс
Ответить