当前位置: 首页>>技术教程>>正文


在localhost中发送邮件需要很长时间

, ,

问题描述

我正在使用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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/6254.html,未经允许,请勿转载。