【问题标题】:How to send mail using PHP?如何使用 PHP 发送邮件?
【发布时间】:2009-03-11 10:47:13
【问题描述】:

我使用的是 Windows Vista 操作系统。 PHP、MySQL 作为数据库和 Apache Web 服务器。

我想向想要加入我网站的人发送通知。 但问题是当我点击提交时。它不会向用户的电子邮件地址发送任何内容。

您认为最好的解决方案是什么?

<?php
$to = "recipient@example.com";
$subject = "Hi!";
$body = "Hi,\n\nHow are you?";
if (mail($to, $subject, $body)) {
  echo("<p>Message successfully sent!</p>");
 } else {
  echo("<p>Message delivery failed...</p>");
 }
?>

【问题讨论】:

  • 您能告诉我们您尝试使用的代码吗?
  • 如果您在本地测试,请确保您的本地 smtp 配置已设置...(查看 serioys sam 的答案)

标签: php email


【解决方案1】:

您有多种选择:

  • 内置了mail function,但是需要机器上运行一些MTA,不支持认证,发附件需要下功夫
  • Pear Mail 包,如果你喜欢使用 Pear 的东西
  • 有一个很好的PHPMailer class,我在过去几年中使用过它,它真的很棒。之所以喜欢它,是因为它非常简单且易于包含在您的项目中(只需一个简单的 include 调用),而且功能强大

【讨论】:

    【解决方案2】:

    Zend Framework 中的Zend_Mail 在发送电子邮件方面做得非常好!!你不需要使用整个 Zend Framework,你可以使用 Zend_Mail!

    【讨论】:

      【解决方案3】:

      使用 Pear "Mail" 类,它需要访问在端口 25 上侦听的单独 SMTP 服务器。

      示例代码如下:

      function sendmail($from, $to, $subject, $message, $headers)
      {
          if (is_array($to)) {
                  $recipients = implode(', ', $to);
          } else {
              $recipients = $to;
          }
      
          $errorlevel = error_reporting();
          $headers["From"] = $from;
          $headers["To"] = $to;
          $headers["Subject"] = $subject;
      
          $params = array();
          $params["host"] = "localhost";
          $params["port"] = "25";
          $params["auth"] = false;
      
          error_reporting($errorlevel & ~E_WARNING);
      
          $mail_object =& Mail::factory("smtp", $params);
          $res = $mail_object->send($recipients, $headers, $message);
      
          error_reporting($errorlevel);
      
          return $res;
      }
      

      nb:这是旧代码 - 我现在不记得为什么我必须屏蔽 E_WARNING

      【讨论】:

        【解决方案4】:

        您似乎没有安装邮件服务器。 Apache 或 PHP 不会为您发送邮件。 PHP 正在为此注册功能,但在内部您必须配置一个邮件 smtp 服务器来进行实际发送。

        Check this post.

        【讨论】:

          【解决方案5】:

          只需查看“How to Send Email from a PHP Script”即可。它使用邮件功能发送邮件,并进一步提供本地和远程 SMTP 配置的配置。

          【讨论】:

            【解决方案6】:

            有很多方法可以通过 PHP 发送电子邮件。如果您不使用任何框架,则首先使用内部 mail() 函数。我建议使用Zend Framework 的 Zend_Mail 组件。我使用过它,它运行良好,并为您提供了一种很好的面向对象的方式来使用 PHP 发送电子邮件。 但是如果你有理由使用mail() 函数,那么我想你可能需要知道这些: PHP mail() 本身不发送电子邮件。它利用其他工具发送电子邮件。如果您在 Unix 系统中运行您的应用程序,mail() 会尝试使用通常安装在大多数类 Unix 系统上的 sendmail 程序来发送电子邮件。 在 Windows 平台上,没有安装 sendmail,因此 PHP 将尝试使用 SMTP 服务器发送电子邮件。所以你应该告诉 PHP 这个 SMTP 服务器在哪里,并提供 SMTP 服务器的用户名/密码(如果有的话)。 您可以通过编辑您的 PHP 配置文件 php.ini 来完成此操作。这个文件是一个基于文本的配置文件,PHP 在执行时将使用它。 找到您的 php.ini 文件并在此文件中修改这些值:

            SMTP = localhost
            smtp_port = 25
            sendmail_from = me@example.com
            

            如果您不知道您的php.ini 文件在哪里,请创建一个简单的PHP 文件,例如info.php 并将此代码放入其中:

            <?php
            phpinfo();
            ?>
            

            运行您的页面并搜索.ini。 现在您知道您的 php.ini 文件在哪里了。

            【讨论】:

              【解决方案7】:

              我会推荐使用 swiftmailer 库,该项目有很好的文档并且易于使用。它还为使用默认的 PHP mail() 函数提供了几个优点。

              http://swiftmailer.org/

              【讨论】:

                猜你喜欢
                • 2016-02-25
                • 1970-01-01
                • 2022-01-10
                • 2011-05-30
                • 1970-01-01
                相关资源
                最近更新 更多