Простой способ отправлять письма из приложения C на Unix - PullRequest
1 голос
/ 04 декабря 2008

Я разрабатываю систему, которая в какой-то момент потребует отправки уведомлений по электронной почте. Поэтому я ищу простой способ сделать это. Немного предыстории: система будет работать на платформе Linux, где-то в сети будет работать работающий SMTP-сервер, оператор будет настраивать свой адрес, учетные данные сервера, если это необходимо, и список целевых адресов электронной почты (нет, я НЕ работаю над система массовой электронной почты ;-). Процесс, который должен будет отправлять электронные письма, вероятно, будет написан на C, но супер производительность не является обязательным требованием, не будет большого количества отправляемых писем, поэтому использование некоторого инструмента командной строки является приемлемым вариантом. В основном то, что я пробовал в прошлом для подобных задач:

  • Вызов локального sendmail в режиме командной строки. Это кошмар из-за необходимости поддерживать загадочный конфиг sendmail. Это то, чего я действительно хотел бы избежать.
  • Общение с портом SMTP-сервера напрямую (EHLO и т. Д.). Это вариант, но слишком низкий уровень для 2008 года; -).
  • Использование некоторого MUA, который общается с локальным демоном sendmail, действующим в качестве ретранслятора почты. Это не совсем точно, потому что для этого требуется настроить и настроить локальный sendmail.

Так что мне в основном нужна какая-то библиотека для языка C или простой MUA командной строки, который должен быть в состоянии общаться с удаленным sendmail (т. Е. Общаться с SMTP-сервером, которому я говорю), , но не требует локальный почтовый ретранслятор .

Любые идеи приветствуются!

Ответы [ 5 ]

4 голосов
/ 04 декабря 2008

mail (1) или mailx (1)
Кроме того, поскольку у вас есть локальный MTA, вы можете направить сообщение напрямую в sendmail (8) (что, несмотря на его название, является несколько стандартным интерфейсом, используемым многими MTA для ввода почты)

1 голос
/ 04 декабря 2008

Вот хорошая библиотека SMTP, libESMTP

0 голосов
/ 25 августа 2009

Вы пробовали sendEmail ?

Я добился успеха с аналогичным автономным почтовым агентом командной строки Win32 с именем Blat , а также ищу аналогичное решение для Linux, которое не требует поддержки системы.

В прошлом я использовал ssmtp в качестве облегченной альтернативы sendmail, хотя обычно для этого требовалась конфигурация и поддержка всей системы. Хотя это полезно для многих приложений, которым требуется работающий MTA, я понимаю, что это не решает вашу конкретную проблему.

0 голосов
/ 05 декабря 2008

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

Вам не нужно использовать Sendmail. Как и другие авторы, вы могли бы использовать что-то более легкое. Все, что вам нужно, это то, что может действовать как SMTP-клиент. Вы даже можете встроить эту функциональность в свою программу, но в итоге вы получите то, что по сути является MTA.

0 голосов
/ 05 декабря 2008

Perl's Mail :: Mailer предоставляет очень простой способ генерировать почту через локальный MTA (пример из perldoc -q mail):

use Mail::Mailer;

my $mailer = Mail::Mailer->new();
$mailer->open({
    From    => $from_address,
    To      => $to_address,
    Subject => $subject,
}) or die "Can’t open: $!\n";
print $mailer $body;
$mailer->close();

Если вы используете C, вы можете написать оболочку сценария вокруг чего-либо, используя Mail :: Mailer, или напрямую вызвать MTA через оболочку и записать в нее отформатированное сообщение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...