【问题标题】:Mail() not working, any ideas why?Mail() 不工作,任何想法为什么?
【发布时间】:2012-03-05 19:10:34
【问题描述】:

大家好,我正在使用联系表单中的 mail(),但由于某种原因它无法正常工作。

我设置的php编码如下:

            // sending email to sales@xxx.com
        $to      = "hello@xxx.com";
        $subject = 'Email From {$name} from your website';
        $message = "$name has contacted you from the website and says:

        $mcontent

        $name 's contact email address is: $email"; 

        $headers = $email . "\r\n";
        $headers .= "Reply-To: " . $email . "\r\n"; 
        $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; 

        mail($to, $subject, $message, $headers) or die ("Failure");
        // end of sending mail

        returnheader("/xxx/email-sent");  

我完全没有错误,完成后它甚至会进入成功页面。

任何想法为什么这不起作用。

【问题讨论】:

  • 使用退出;在 mail() 下,看看你是否仍然没有错误。
  • @Jleagle 该电子邮件是在联系表单中提交的电子邮件,正如我所说我已经测试过并且没有提交任何错误

标签: php email function


【解决方案1】:
  • 如果您使用的是 WINdows,请确保您的服务器中有 SMTP 服务器 php.ini
  • 如果您是 una Unix,请确保 MTA 正在运行:如果它(至少部分)安装但未运行,您将获得这种效果

编辑

如果您的 MTA 没有运行,而您启动它,使用 PHP 发送的邮件将会消失!它们已排队,但未处理。

【讨论】:

  • 取决于操作系统 - 您使用哪一个?
【解决方案2】:

这可能与邮件设置有关。你有在机器上运行的邮件服务器吗?检查 php.ini 中的 sendmail / smtp_server 设置。

【讨论】:

  • php.ini 文件中没有 smtp 选项
  • 会适用于win32,但当时似乎不是这样。
【解决方案3】:

你应该在变量$subject中使用双引号而不是单引号

$subject = "Email From {$name} from your website";

【讨论】:

    【解决方案4】:

    mail() 使用sendmail,默认为:sendmail -t -i

    如果邮件已被接受,则返回TRUE,而不是已发送:

    返回值

    如果邮件被成功接收,则返回 TRUE,否则返回 FALSE。

    请务必注意,仅仅因为邮件被接受投递,并不意味着邮件实际上会到达预定目的地。

    我建议将 http://swiftmailer.org/ 与 SMTP 结合使用,而不是 mail()

    【讨论】:

    • @Tim 我似乎无法让 swiftmailer 工作,据我所知,它使用 smtp sendmail 不是吗?设置时,提交联系方式时只会出现空白屏幕。
    【解决方案5】:

    我检查了您的代码,它在我的服务器上运行良好,我正在收到电子邮件。 在这里,您的 SMTP 服务器设置似乎有问题。 您的 PHP 脚本没有任何问题。 你可以在这里找到你的解决方案。 php.ini & SMTP= - how do you pass username & password

    同样在windows环境下, http://www.ruhanirabin.com/php-sendmail-setup-with-smtp-iis-and-windows-servers/

    【讨论】:

    • 谢谢,我正在寻找 phpmailer 直接发送 smtp。
    【解决方案6】:

    如果$email 只是一个电子邮件地址,则$headers 的第一行无效。大概你会想要这样的东西:

    $headers = "Cc: " . $email . "\r\n";
    

    $headers = "From: " . $email . "\r\n";
    

    【讨论】:

      【解决方案7】:

      原因可能是例如,您没有设置邮件服务器,或者如果您有防火墙配置。

      【讨论】:

        猜你喜欢
        • 2020-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-28
        • 2016-09-13
        • 1970-01-01
        相关资源
        最近更新 更多