我有一个带有 XP 和 Ubuntu (9.10) 盒子的家庭网络。我创建了一个小的测试 php 脚本来检查我是否可以从我的机器发送电子邮件。我正在使用具有相同 [邮件设置] 的相同 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 ";
}
?>
出于明显的原因,这些电子邮件已被欺骗,但除此之外,脚本与我测试的脚本完全相同
[编辑] 我已经在我的 Ubuntu 机器上安装了 mailutils 包,现在脚本运行并返回“电子邮件已发送”。但是,邮件永远不会到达我的邮件收件箱(到目前为止我已经等了 1 天)。还有什么我需要看的吗?
您可以直接从该机器上的命令行发送邮件吗?如果不是,那就是问题——机器没有正确设置。
我认为该
mail()
功能可以使用许多不同的方法来发送邮件,默认使用sendmail
或替换。也许这部分是您需要查看的地方。您可能需要设置通过 SMTP 服务器发送邮件。例如,如果您使用 Gmail,这里有一篇很好的文章,其中包含有关如何通过 Gmail 的 SMTP 服务器发送的分步说明:http: //www.marksanborn.net/linux/send-mail-postfix-through-gmails-smtp -on-a-ubuntu-lts-服务器/
他列出的许多命令都需要超级用户访问权限,或者以“sudo”为前缀。
它在第一次运行时对我有用。如果它不适合您,请务必查看该页面上的评论,其中提供了一些额外的提示。
尝试以下命令并检查它们是否显示可用于解决问题的任何内容
更多 /var/log/maillog mailq
所有应用程序都需要连接到端口 25(故障)上的 smpt 才能发送消息。在您的 php 应用程序中,您必须提到要连接到哪个 smtp。我认为如果您不提及任何内容,它会使用您本地系统中安装的 smtp(我自己不是 php 开发人员,所以不确定)。此外,您的 ubuntu 机器可能没有配置 smtp 服务器(例如 postfix)以正确地将邮件发送到 Internet。有一个称为“仅本地”的设置,其中仅将邮件传递到本地系统。解决问题的最佳方法是,在一个终端中键入命令“tail -f /var/log/mail.log”,这会实时显示该日志文件发生的更新。然后你执行你的 php 脚本。当您执行脚本时,您必须能够看到您的 smtp serevr 给您的消息。
我刚刚使用
sendmail_path
php.ini 中未注释的代码尝试了您的代码:还要检查您的垃圾邮件文件夹。我将我的 gmail 帐户放在“收件人”字段中,然后在垃圾邮件文件夹中找到了它:)