php - 无法通过 php 脚本发送邮件

标签 php linux email

我在网上找到了一个 php 脚本:

<?php
$to = "*******@yahoo.com";
$subject = "Test mail";
$message = "Hello! This is a simple email message.";
$from = "****@*****.nu";
$headers = "From:" . $from;
mail($to,$subject,$message,$headers);
echo "Mail Sent.";
?>

如果我从我的网络酒店使用它,它会完美运行。但我需要它在我的家庭服务器上运行,而我只是没有收到任何东西。我尝试使用 php -f phpTest 运行它,并通过本地 ip (10.0.0.2) 和使用全局主机名。我只是收到“邮件发送”而没有收到邮件。

这是我运行的 ubuntu 服务器,它使用 apache2。就像我说的,脚本没有错,因为它适用于网络酒店。它应该与我的本地设置有关,但我不知道是什么。

我们将不胜感激!

\\恶魔

最佳答案

PHP mail 函数使用本地 MTA(邮件传输代理),这是一个邮件守护进程,与您的 PHP 解释器和 Apache Web 服务器运行在同一台机器上。

因此您必须在您的 Ubuntu 设置中安装和配置一个。 sendmail 是经典的,但据说 exim 易于配置,并且可以将您当前的 SMTP 服务器用作智能主机中继,这非常适合家庭服务器。

sudo apt-get install exim4-daemon-light
sudo dpkg-reconfigure exim4-config

关于php - 无法通过 php 脚本发送邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19344041/

相关文章:

php - 具有动态准备语句的安全、可扩展数据库

linux - docker容器中的环境变量在哪里

javascript - 从 Google 组织结构图发送电子邮件链接

laravel - 无法使用 3 个可能的身份验证器在用户名\"yourmail@gmail.com\"的 SMTP 服务器上进行身份验证 Authenticator LOGIN 返回了预期的响应

c# - 如何使用 System.Net.Mail 向电子邮件添加附件?

php - CakePHP 将模型名称添加到查询返回的信息中

php - 使用mysql根据另一个表中的最高值将新记录插入表中?

php - Laravel Windows 的等效目录是什么?

linux - 庆典/Linux : "s" character ignored in prompt

node.js - MongoDB - 使用代码 :100 关闭