未能发送电子邮件在Ubuntu框(Karmic考拉)

我有一个XP和Ubuntu(9.10)框的家庭networking。 我已经创build了一个小的testingphp脚本来检查我可以从我的机器发送电子邮件。 我使用相同的[邮件设置]相同的php.ini文件,但该文件在我的XP机器上工作,并在Ubuntu的盒子上失败。 我已经在这里包括脚本,希望有人可以发现什么是错的:

<?php // send e-mail to ... $to="[email protected]"; // Your subject $subject="Test Email"; // From //$header="from: test script"; $header='From: host-email-username@hostdomain_here' . "\r\n" . // Your message $message="Hello \r\n"; $message.="This is test\r\n"; $message.="Test again "; // send email $sentmail = mail($to,$subject,$message,$header); // if your email succesfully sent if($sentmail){ echo "Email Has Been Sent ."; } else { echo "Cannot Send Email "; } ?> 

电子邮件被明显的原因欺骗了,否则,脚本就和我testing的一样

[编辑]我已经在我的Ubuntu盒子上安装了mailutils软件包,现在脚本运行并返回“已发送电子邮件”。 但是,邮件永远不会到达我的邮件收件箱(到目前为止我已经等了一天)。 还有什么我需要看?

你能直接从该机器上的命令行发送邮件吗? 如果没有,那就是问题 – 机器设置不正确。

我认为mail()函数可以使用许多不同的方法来发送邮件,默认使用sendmail或其replace。 也许这部分是你需要看的地方。

您可能需要设置通过SMTP服务器发送邮件。 例如,如果您使用Gmail,下面是一篇很好的文章,其中包含有关如何通过Gmail的SMTP服务器发送的分步说明: http : //www.marksanborn.net/linux/send-mail-postfix-through-gmails-smtp -on-A-Ubuntu的LTS-服务器/

他列出的许多命令都需要超级用户访问,或者用“sudo”作为前缀。

它在第一次运行中为我工作。 如果它不适合你,一定要检查该页面上的评论,这提供了一些额外的提示。

尝试下列命令,并检查它们是否显示可用于解决问题的任何内容

more / var / log / maillog mailq

所有应用程序需要连接到端口25(缺省)的smpt,才能发送消息。 在你的PHP应用程序中,你必须提到要连接到哪个smtp。 我想如果你没有提到任何,它使用安装在本地系统的smtp(我不是一个PHP开发人员,我自己所以不知道)。 另外你的Ubuntu机器可能没有configuration正确的邮件发送到互联网的smtp服务器(如后缀)。 有一个叫做“仅限本地”的设置,在这个设置里邮件只传递给本地系统。 最好的解决方法是在一个terminal中input“tail -f /var/log/mail.log”这个命令,实时显示日志文件的更新情况。 然后你执行你的PHP脚本。 你必须能够看到当你执行脚本时你的smtp serevr给你的信息。如果你在这里发布这些信息,我们可能会进一步尝试解决你的问题。

我刚刚在php.ini中取消注释了sendmail_path的代码:

 ; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). sendmail_path = sendmail -t -i 

同时检查你的垃圾邮件文件 我把我的Gmail帐户在'到'字段,我发现它在垃圾邮件文件夹:)