Страница 1 из 7
libcurl: email
Добавлено: 17 Ноябрь 2016, 23:09
Игорь Столяров
Подскажите пожалуйста: имею желание отправить несколько отдельных писем разным получателям с разными файлами.
Тема и текст письма легко меняется, а как очистить список получателей и файлов ?
Хотел сделать, вот так:
но это закрытые (PRIVATE) данные, да и не уверен я что так правильно ...
Скорее всего, я чего-то не понимаю.
Есть ли какой-нибудь сброс данных текущего сообщения ? Не инициализировать же каждый раз класс заново ...
Заранее спасибо !
libcurl for Clarion
Добавлено: 17 Ноябрь 2016, 23:31
Дед Пахом
Сброс не предусмотрен. Проще всего написать процедуру отправки письма, которую вызывать в цикле. Типа
Код: Выделить всё
SendMail procedure(server, port, user, pwd, body, attachments...)
curl TCurlMailClass
code
curl.Init()
curl.Server(server, port)
!...
curl.Send()
libcurl for Clarion
Добавлено: 17 Ноябрь 2016, 23:47
Игорь Столяров
Спасибо, сейчас попробую ...
Я делал вот так и не получилось:
Код: Выделить всё
code
Loop ! По списку получателей
curl.Init()
curl.Server(server, port)
!...
curl.Send()
end
А вообще можно как-то реинициализировать Curl ? Curl.Kill() - не получилось ...
libcurl for Clarion
Добавлено: 17 Ноябрь 2016, 23:50
Дед Пахом
Игорь Столяров писал(а): А вообще можно как-то реинициализировать Curl ? Curl.Kill() - не получилось ...
Ну разве что объявить curl как ссылку &TCurlMailClass и делать NEW в начале цикла, DISPOSE в конце.
libcurl for Clarion
Добавлено: 17 Ноябрь 2016, 23:59
Игорь Столяров
Прекрасно работают оба способа (через отдельную процедуру и ссылку).
Мне вариант со ссылкой как-то понятней и есть гарантия, что память возвращена, а не подвисла где-то в закромах cURL ...
Большое спасибо за помощь !
libcurl for Clarion
Добавлено: 20 Ноябрь 2016, 0:40
Игорь Столяров
Дед Пахом писал(а): Обновление v1.06 Возможное "Вложение без имени.txt"
Беда с вложением файлов с русскими именами ....
Файл нормально присоединяется и приходит в письме, но все русские буквы в имени - кракозябрами ...
libcurl for Clarion
Добавлено: 20 Ноябрь 2016, 1:06
Дед Пахом
curl.Charset('win1251'), curl.AddAttachment(......., 'win1251') по идее должны помочь.
libcurl for Clarion
Добавлено: 20 Ноябрь 2016, 7:45
Игорь Столяров
Дед Пахом писал(а): 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)
.....
libcurl for Clarion
Добавлено: 24 Ноябрь 2016, 18:27
Игорь Столяров
Добрый день !
Вопросик имею спросить.
А можно (как-то) в TCurlMailClass включать запрос на уведомление о прочтении отправляемого e-mail ?
Заранее спасибо !
libcurl for Clarion
Добавлено: 26 Ноябрь 2016, 17:13
Дед Пахом
Игорь Столяров писал(а): А можно (как-то) в TCurlMailClass включать запрос на уведомление о прочтении отправляемого e-mail ?
Если это возможно сделать через curl, то почти наверняка возможно и через libcurl. Но я что-то не могу найти в интернете способ.
libcurl for Clarion
Добавлено: 26 Ноябрь 2016, 17:35
Admin
Добавить в письмо, в заголовок две строки:
Код: Выделить всё
X-Confirm-Reading-To: mixer@clarionlife.net
Disposition-Notification-To: mixer@clarionlife.net
Уведомления:
о прочтении
и о доставке
libcurl for Clarion
Добавлено: 26 Ноябрь 2016, 17:36
Игорь Столяров
С теорией я вроде разобрался. cURL здесь не причем.
Нужна управляемая вставка в метод создания заголовка сообщения, что-то вроде:
Код: Выделить всё
TCurlMailClass.CreateHeader ...
...
If Self.Notice then Mail.AddLine('Disposition-Notification-To: ' & CLIP(SELF.mailfrom)).
Ну и конечно, проверить ...
libcurl for Clarion
Добавлено: 26 Ноябрь 2016, 17:58
Дед Пахом
а, точно, подзабыл уже, как письмо формируется. Добавлю на днях оба уведомления.
libcurl for Clarion
Добавлено: 28 Ноябрь 2016, 12:51
Дед Пахом
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 нет.
libcurl for Clarion
Добавлено: 28 Ноябрь 2016, 12:56
Игорь Столяров
Дед Пахом писал(а): С гугла послать письмо с уведомлением нельзя
Значит это уже отмирающий рудимент SMTP ....