我正在使用Ubuntu。我使用以下命令在本地主机上安装了sendmail
sudo apt-get install sendmail
现在我想使用以下php代码检查邮件是否来自我的localhost。
<?php
$to = "test@test.com";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "someonelse@example.com";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
echo "Mail Sent.";
?>
当我执行代码时,需要很长时间,最后将邮件作为邮件发送回显。 有没有可能解决这个问题?
答案 0 :(得分:14)
编辑文件/etc/hosts
并确保第一行如下:
127.0.0.1 localhost.localdomain localhost myhostname
编辑sendmail
配置文件(Ubuntu中为/etc/mail/sendmail.cf
)并取消注释line #O
:
O HostsFile = / etc / hosts
重新启动计算机,或运行sudo service sendmail restart
。
现在计算机启动速度要快得多,mail()
函数应该立即返回。
HOWEVER ,除非您按照第5步操作,否则不会实际发送电子邮件。
每当使用mail函数时,您必须使用sendmail -f
选项。
例如:
mail('recipient@somewhere.com', 'the subject', 'the message', null, '-fsender@somewhere.com');
答案 1 :(得分:2)
我知道这个问题已经得到解答,但是我发布这个问题是希望它可以帮助其他人寻找这个问题的不同解决方案。
对我来说,我只需要将服务器的完全限定域名(FQDN)放入/etc/mailname
。例如:server.example.com
。
重新启动Sendmail以应用更改。
$ sudo service sendmail restart
答案 2 :(得分:2)
这个答案帮助了我https://serverfault.com/a/221894/186680
Postfix和sendmail安装在哪里。已移除sendmail Yum remove sendmail
答案 3 :(得分:0)
延迟通常表示DNS超时。您的计算机是否配置了正确的DNS条目?我会尝试在命令行上使用邮件进行测试,因为这会隔离问题。
答案 4 :(得分:0)
除非您熟悉Sendmail,否则最好安装其他MTA。另一个答案已经提出了ssmtpd
;一个常见的选择是Postfix。