Отправка почты занимает много времени в локальном хосте
Я использую Ubuntu.I установлен sendmail на моем локальном хосте, используя следующую команду
sudo apt-get install sendmail
Теперь я хочу проверить, идет ли почта с моего локального хоста, используя следующий php-код.
<?php
$to = "[email protected]";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "[email protected]";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
echo "Mail Sent.";
?>
Когда я выполняю код, он занимает очень много времени и, наконец, эхо сообщения в виде отправки почты.
Есть ли возможность исправить это?
Ответы
Ответ 1
Отредактируйте файл /etc/hosts
и убедитесь, что первая строка следующая:
127.0.0.1 localhost.localdomain localhost myhostname
Измените конфигурационный файл sendmail
(/etc/mail/sendmail.cf
в Ubuntu) и раскомментируйте line #O
:
O HostsFile =/etc/hosts
Перезагрузите компьютер или запустите sudo service sendmail restart
.
Теперь компьютер должен загружаться намного быстрее, а функция mail()
должна возвращаться почти сразу.
ОДНАКО, письма не будут отправляться, если вы не выполните шаг 5.
При использовании функции почты вы должны использовать параметр sendmail -f
.
Например:
mail('[email protected]', 'the subject', 'the message', null, '[email protected]');
Ответ 2
Я знаю, что на этот вопрос уже был дан ответ, но я отправляю это в надежде, что он может помочь кому-то еще найти другое решение этой проблемы.
Для меня мне просто нужно было установить полное доменное имя моего сервера (FQDN) в /etc/mailname
. Например: server.example.com
.
Перезапустите Sendmail, чтобы применить изменения.
$ sudo service sendmail restart
Ответ 3
Этот ответ помог мне https://serverfault.com/a/221894/186680
Postfix и sendmail, если они установлены. Удалено sendmail Yum remove sendmail
Ответ 4
Задержка обычно указывает на тайм-аут DNS. Является ли ваша машина настроенной с правильными записями DNS? Я бы попытался выполнить тест, используя почту в командной строке, так как это изолировало бы проблему.
Ответ 5
Если вы не знаете Sendmail хорошо, вы, вероятно, можете установить другую MTA. ssmtpd
уже был предложен в другом ответе; общим выбором является Posfix.