Russian Qt Forum
Ноябрь 23, 2024, 00:23 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: mail  (Прочитано 12590 раз)
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« : Июль 14, 2009, 16:17 »

как посылать почту программно в линуксе? система - debian lenny, почтовый сервер exim4. гугл говорит открывать сокет и писать письмо руками, не кошерно. Есть ли нормальное апи для посылки почты?
Записан
Rcus
Гость
« Ответ #1 : Июль 14, 2009, 16:50 »

Гуглу надо правильно вопросы задавать, ключевое слово здесь "SMTP" (Simple Mail Transfer Protocol)
еще можно apt-cache search smtp library Улыбающийся
« Последнее редактирование: Июль 14, 2009, 16:52 от Rcus » Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #2 : Июль 14, 2009, 20:26 »

smtp юзать нежелательно. Потом по нему я тоже примеров кда не нашел, можно директлинк?
какие есть альтернативы смтп?
Записан
Tonal
Гость
« Ответ #3 : Июль 15, 2009, 08:31 »

SMTP - это протокол отправки писем. Поэтому, если тебе нужно отправить письмо, то либо он, либо IMAP.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #4 : Июль 15, 2009, 10:01 »

а юзать его как? какая либа? да и сам хедер где взять?
Записан
crackedmind
Гость
« Ответ #5 : Июль 16, 2009, 02:37 »

Ну либу можно поискать на просторах инета.

Ну, и, если все таки программа делается на Qt, то в libqxt есть класс QxtSendMail.

p.s. Правда он использует программу sendmail. Которую можно и самому вызывать, и обойтись без Qxt
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #6 : Июль 16, 2009, 08:06 »

к сожалению программа не на qt... нашел либу libesmtp в репах дебиана, похоже оно) правда апи как всегда через 1 место
Записан
crackedmind
Гость
« Ответ #7 : Июль 16, 2009, 08:28 »

Ну в любом случае, почему бы напрямую не вызывать sendmail?
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #8 : Июль 16, 2009, 08:58 »

криво?Улыбающийся вызовы system не тру:(
Записан
BRE
Гость
« Ответ #9 : Июль 16, 2009, 09:00 »

криво?Улыбающийся вызовы system не тру:(
Непонимающий
Посмотри на QProcess.
Записан
BRE
Гость
« Ответ #10 : Июль 16, 2009, 09:10 »

Кстати в Qt3 был пример отправки сообщения используя SMTP на несколько сотен строк. Протокол то простой.  Подмигивающий
Записан
spirit
Гость
« Ответ #11 : Июль 16, 2009, 09:17 »

вот есть класс, вот только не уверен, что он бесплатный.
ссылку обновил.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #12 : Июль 16, 2009, 09:23 »

spirit
дома гляну реализацию, спасибо

BRE да, я видел) в 1м посте я в том числе его и упоминал) мб и заюзаю...
Записан
Rcus
Гость
« Ответ #13 : Июль 16, 2009, 09:33 »

Кстати в Qt3 был пример отправки сообщения используя SMTP на несколько сотен строк. Протокол то простой.  Подмигивающий
Тоньше надо Улыбающийся SMTP простой пока используется ASCII без аттачей, а дальше на каждое расширение протокола по RFC Улыбающийся
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #14 : Июль 16, 2009, 16:29 »

Как раз этим занимаюсь. Использовать надо любого клиента к MTA. Например, попроще - jwsmtp. Код такой:

Код
C++ (Qt)
   jwsmtp::mailer m("tome@gmail.com",
                       "fromme@gmail.com",
                       "bugreport",
                       "Hello",
                       "localhost",
                       jwsmtp::mailer::SMTP_PORT,
                       false);
 
   // аттач
   m.attach("/tmp/report.txt");
 
   // отправка
   m.send();
 
   QString response = m.response().c_str();
 
   if(response.startsWith("250"))
       qDebug("Success");
   else
       qDebug("Failed");
 

Посложнее и покруче - libesmtp (есть в Debian). Документация тут.

Проблемы: нет гарантии доставки письма. Если письмо корректно сформировано (с точки зрения синтаксиса), то exim сразу ответит "250 OK", и ты будешь думать, что письмо ушло. Но если exim по какой-то причине не сможет доставить это письмо (несуществующий обратный адрес, др.), то письмо не уйдёт и узнать об этом можно будет из лога /var/log/exim4/mainlog. Возможно, в отслеживании статуса письмо поможет libesmtp с ETRN, но я это ещё не щупал.
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.076 секунд. Запросов: 23.