【问题标题】:PHP mail will not send from Windows Server 2008PHP 邮件不会从 Windows Server 2008 发送
【发布时间】:2011-04-07 17:58:40
【问题描述】:

我有两台服务器。一个(linux)将使用下面的脚本很好地发送邮件。第二个(windows server 2008)什么都不发送。

<?php mail ( "nobody@email.com", "Contact Us Form", "This is an email from your site", "From: nobody@email.com" )
?>

【问题讨论】:

    标签: windows-server-2008 php


    【解决方案1】:

    mail() 在 linux 和 windows 上的工作方式非常不同。

    • 在 Linux 上,它将您的邮件通过管道传送到 sendmail 二进制文件,由它完成所有工作
    • 在 Windows 上,它实际上需要充当 MTA 才能将邮件传递给另一个应用程序。

    在 Windows 上,最好的办法是设置 SMTP 信息,以便 PHP 可以将邮件移交给另一台负责最终投递的服务器。

    http://ca2.php.net/manual/en/mail.configuration.php#ini.smtp

    已经完成(并且您的网络服务器重新启动以使更改生效)如果您仍然无法发送邮件,请检查 PHP 和指定 MTA 的日志以查看故障所在。

    【讨论】:

    • 感谢您的帮助。还有一个问题。我有大约 5 个发送邮件的文件。是否可以让我的 SMTP 信息成为一个全局文件,这样我就可以在每个文件中添加一行代码,以使我的 SMTP 信息可用于每个邮件文件?
    • php.ini 中的设置是全局的,所以如果你设置它们,一旦在该网络服务器上运行的所有 PHP 脚本都会采用它们。
    • 你最好使用 PHPMailer 或 Swiftmailer。无论他们在哪个平台上,他们都可以将电子邮件发送到 SMTP 服务器。将 config/auth 信息粘贴到一个类中,您的各种 PHP 脚本可以轻松地重用它们。
    【解决方案2】:

    检查您的 PHP.ini 您也可以在脚本级别使用 ini_set 函数覆盖这些(我认为)。

    [mail function]
    ; For Win32 only.
    SMTP = xxx.xxx.xxx.xxx
    smtp_port = xx
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-21
      • 2020-01-10
      • 1970-01-01
      • 1970-01-01
      • 2013-02-20
      • 1970-01-01
      • 2013-06-12
      • 1970-01-01
      相关资源
      最近更新 更多