Я хочу отправить электронное письмо из программы на C ++.
Я хочу сделать это с помощью sendmail. Ну вообще-то мне все равно как, я только что обнаружил, что ни одна из библиотек smtp не работает ...
Я нашел через Google способ сделать это:
echo "This will go into the body of the mail." | mail -s "Subject line" you@youremailid.com
Проблема в том, что почта никогда не приходит по назначению. Что мне показалось странным: разве не нужен URL-адрес smtp-сервера? Например, smtp.my-provider.com:25?
Sendmail попытается найти MX-запись домена, на который вы отправляете сообщения, поэтому вам не нужно указывать адрес или имя хоста SMTP-сервера по умолчанию. Если вам действительно нужно принудительно указать конкретный адрес, это можно сделать через DNS или запись в файле почтовой таблицы Sendmail.
Сначала вы должны попытаться определить, что случилось с вашим исходным сообщением. Попробуйте отправить из своего приложения и запустить:
tail -f /var/log/maillog
Вы также можете просмотреть почтовую очередь напрямую с помощью команды «mailq». Если эта команда возвращает вывод, вы можете попытаться принудительно обработать очередь с помощью "sendmail -v -q". Это покажет природу ошибки.
Также проверьте электронную почту корневого пользователя на наличие сообщений о возврате.
DNS-имя SMTP-сервера не требуется, поскольку mail
команда ожидает взаимодействия с локальным агентом почтового транспорта (MTA) на том же компьютере. Для Linux этим MTA часто является Sendmail. Конфигурация sendmail может включать DNS-имя почтового сервера вашего интернет-провайдера (MTA) в качестве интеллектуального хоста, если вам нужно направлять исходящую почту через почтовый сервер вашего интернет-провайдера.
Я бы проверил журналы почты, чтобы узнать, что случилось с вашей исходящей почтой. Он может стоять в очереди на доставку, и вы можете в должное время получить отчет о недоставке.