【问题标题】:Not able to send mail by php-script无法通过 php-script 发送邮件
【发布时间】:2013-10-13 10:15:23
【问题描述】:

我在网上找到了一个 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 linux email


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    您可以使用 Swiftmailer 之类的库来发送邮件 through an existing SMTP server(例如您的常规邮件地址),而不是依赖需要工作 MTA 的内置 mail 函数。这样您就可以减少垃圾邮件过滤(因为垃圾邮件过滤器有时会非常怀疑从家庭服务器发送的邮件)。

    【讨论】:

    • 这绝对是您的最佳选择。我曾经尝试在家中设置自己的邮件 SMTP 服务器,但使用动态 IP,您完全可以忘记它。即使使用固定 IP,您仍然会被大多数邮件服务器过滤掉
    猜你喜欢
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    • 2014-09-03
    相关资源
    最近更新 更多