问题描述
我正在使用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.";
?>
当我执行代码时,它需要很长时间,最后将邮件作为邮件发送回显。有没有可能解决这个问题?
最佳解决方法
编辑文件/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()
功能应该立即返回。
但是,除非您按照步骤5执行,否则实际上不会发送电子邮件。
每当使用邮件功能时,您必须新使用sendmail -f
选项。
例如:
mail('recipient@somewhere.com', 'the subject', 'the message', null, '-fsender@somewhere.com');
次佳解决方法
我知道这个问题已经得到了解答,但我发布这个问题是希望它可以帮助其他人寻找这个问题的不同解决方案。
对我来说,我只需要将服务器的完全限定域名(FQDN)放入/etc/mailname
。例如:server.example.com
。
重新启动Sendmail以应用更改。
$ sudo service sendmail restart
第三种解决方法
这个答案帮助了我https://serverfault.com/a/221894/186680
Postfix和sendmail安装在哪里。删除了sendmail Yum remove sendmail