ситуация следующая: необходимо отправлять почтовые сообщения из под FreeBSD. Язык С. Помогите примерчиком, пожалуйста. В Сях я практически на нуле. Те примеры, которые я нарываю, используют виндовые билиотеки. Чуствую, что будет так же, как в PHP, а примеров не вижу. Книжки еще не нарыл.
Используй внешнюю программу. Например, 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++ ты зря незнаешь :)
Спасибо. Завтра с утра буду пробовать.
Основаня специализация у меня сейчас - 1C, ну есть еще FoxPro, Delphi, PHP и СУБД. А сейчас решили сбацать кое-что на С
мда, посмотрел я внимательно, к сожалению не подходит - программа должна уметь обращаться к другому серваку, у нас три сервера :(
В смысле - должне уметь обращаться к другому серваку ?
А у тебя обезатьльно должнобыть на С? На Perl все легко получается, тебе нужны только два модуля: Mime:Base64 и Mail:Sender.WWell,
>А у тебя обезатьльно должнобыть на С? На 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.