The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"программная отправка сообщений С"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"программная отправка сообщений С"
Сообщение от AlexFromNN Искать по авторуВ закладки on 24-Июл-03, 17:49  (MSK)
ситуация следующая: необходимо отправлять почтовые сообщения из под FreeBSD. Язык С. Помогите примерчиком, пожалуйста. В Сях я практически на нуле. Те примеры, которые я нарываю, используют виндовые билиотеки. Чуствую, что будет так же, как в PHP, а примеров не вижу. Книжки еще не нарыл.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "программная отправка сообщений С"
Сообщение от XMan Искать по авторуВ закладки on 24-Июл-03, 18:41  (MSK)
Используй внешнюю программу. Например, mail (у меня под линухом полный путь "/usr/bin/mail"; под BSD незнаю, но наверное "/usr/local/bin/mail").
Код наподобии этого:

#include <unistd.h>

...
int fifo[2];
if (pipe(&fifo) == -1) {
  perror("Can't create pipe");
  return код_возврата;
};
switch (fork()) {
  case 0: // потомок
           if (dup2(stdin,fifo[0]) == -1) {
             perror("Can't redirect sdtin to fifo");
             exit(код_возврата);
           };
           execl("/usr/bin/mail","/usr/bin/mail","-s","\"тема сообщения\"","user@host.domain",NULL);
           perror("Can't execute mail program");
           exit(код_возврата)
  case -1: // ошибка
           perror("Can't fork");
           close(fifo[0]);
           close(fifo[1]);
           return код_возврата;
  default: // родитель
           write(fifo[1],"текст сообщения",strlen("текст сообщения"));
           close(fifo[0]);
           close(fifo[1]);
};
...

За правильность синтаксиса не ручаюсь, но с мыслЁй совпадает полностью :)

Теоретически, есть готовые библиотеки, но сам про них ничего незнаю - никогда не нужно было. Третий путь самый сложный - писать SMTP-клиента.

PS. А C/C++ ты зря незнаешь :)

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "программная отправка сообщений С"
Сообщение от AlexFromNN Искать по авторуВ закладки on 24-Июл-03, 18:53  (MSK)
Спасибо. Завтра с утра буду пробовать.
Основаня специализация у меня сейчас - 1C, ну есть еще FoxPro, Delphi, PHP и СУБД. А сейчас решили сбацать кое-что на С
  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "программная отправка сообщений С"
Сообщение от AlexFromNN Искать по авторуВ закладки on 25-Июл-03, 09:30  (MSK)
мда, посмотрел я внимательно, к сожалению не подходит - программа должна уметь обращаться к другому серваку, у нас три сервера :(
  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "программная отправка сообщений С"
Сообщение от XMan Искать по авторуВ закладки on 25-Июл-03, 15:44  (MSK)
В смысле - должне уметь обращаться к другому серваку ?
  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "программная отправка сообщений С"
Сообщение от Асен Тотин emailИскать по авторуВ закладки on 27-Июл-03, 18:39  (MSK)
А у тебя обезатьльно должнобыть на С? На Perl все легко получается, тебе нужны только два модуля: Mime:Base64 и  Mail:Sender.

WWell,

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "программная отправка сообщений С"
Сообщение от J Искать по авторуВ закладки on 28-Июл-03, 12:56  (MSK)
>А у тебя обезатьльно должнобыть на С? На Perl все легко получается,
>тебе нужны только два модуля: Mime:Base64 и  Mail:Sender.
>
>WWell,


а при чем тут перл?

создается нужное количество сокетов, коннектится к нужных хостам на 25 порт, а далее все очень просто, например (проверка телнетом):
telnet x.x.x.x 25
Trying x.x.x.x...
Connected to x.x.x.x.
Escape character is '^]'.
220 x.x.net ESMTP Exim x.x #x Mon, 28 Jul 2003 11:54:23 +0300
mail from: x@x.net
250 <x@x.net> is syntactically correct
rcpt to: x@x.net
250 <x@x.net> is syntactically correct
data
354 Enter message, ending with "." on a line by itself
test
.
250 OK id=19h3mQ-0001tJ-00
quit
221 x.x.net closing connection
Connection closed by foreign host.

Полностью протокол можно прочитать в соответствующем RFC.

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру