2011-09-28 56 views
17

很长一段时间我使用Ubuntu.I使用以下命令发送邮件需要在本地主机

sudo apt-get install sendmail 

现在我想检查邮件是否来自使用下面的PHP代码我的本地云安装在我的本地主机的sendmail。

<?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."; 
?> 

当我执行代码时,它需要很长时间并最终以邮件发送的形式回显邮件。 有没有可能解决这个问题?

+0

升级你的服务器?或者你有一个DNS查找问题? –

+0

也许这是服务器故障的一个更好的问题:http://serverfault.com/ –

+0

在'strace -f'下运行你的脚本来确定它停止了哪个调用。 – sanmai

回答

0

延迟通常表示DNS超时。您的机器是否配置了正确的DNS条目?我会尝试在命令行上使用邮件进行测试,因为这会隔离问题。

0

除非你很了解Sendmail,否则你可能不想安装其他MTA。在另一个答案中已经提出了ssmtpd;普遍的选择是Posfix。

13

编辑文件/etc/hosts并确保第一行是:

127.0.0.1的localhost.localdomain本地主机MYHOSTNAME

编辑sendmail配置文件(在Ubuntu /etc/mail/sendmail.cf),并取消所述line #O

öhosts文件=/etc/hosts中

重新启动计算机,或运行sudo service sendmail restart

计算机现在应该启动得快得多,并且mail()函数应该几乎立即返回。

无论其,该邮件实际上不会,除非你按照步骤5

送到您必须使用新的,只要在使用邮件功能sendmail的-f选项。

例如:

mail('[email protected]', 'the subject', 'the message', null, '[email protected]'); 
+19

第5步?你的答案中没有“步骤”。 – MrVimes

+0

谢谢!这为我的流浪者箱子做了诀窍! –

+2

步骤5来自这个问题http://serverfault.com/questions/173762/php-mail-function-painfully-slow-on-local-development-machine/221894#221894 – cirovladimir

2

我知道这个问题已经回答了,但我希望它可以帮助别人寻找不同的解决这个问题发布此。

对我来说,我只需要将我的服务器的完全限定域名(FQDN)放入/etc/mailname。例如:server.example.com

重新启动Sendmail以应用更改。

$ sudo service sendmail restart