如何使用PHP发送邮件?

时间:2009-03-11 10:47:13

标签: php email

我正在使用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>");
 }
?>

7 个答案:

答案 0 :(得分:3)

您有几种选择:

  • 内置mail function,但它需要在计算机上运行某些MTA,不支持身份验证,并且您需要努力发送附件
  • Pear Mail包,如果你想使用Pear stuff
  • 我过去几年使用了很好的PHPMailer class,效果非常好。它喜欢它,因为它非常简单,易于包含在您的项目中(只是一个简单的包含调用),但功能强大

答案 1 :(得分:3)

Zend_MailZend Framework在发送电子邮件方面做得非常好!您不需要使用整个Zend Framework,只需使用Zend_Mail!

答案 2 :(得分:2)

使用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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

有很多方法可以通过PHP发送电子邮件。如果您没有使用任何框架,则首先使用内部mail()函数。我建议使用Zend Framework的Zend_Mail组件。我已经使用它并且它运行良好并且授予您一个很好的面向对象的方式来使用PHP发送电子邮件。 但是如果你有理由使用mail()函数,那么我认为你可能需要知道这些: PHP mail()不会自行发送电子邮件。它利用其他工具发送电子邮件。如果您在Unix系统中运行应用程序,mail()会尝试使用sendmail程序发送电子邮件,该程序通常安装在大多数类Unix系统上。 在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文件的位置了。

答案 5 :(得分:0)

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

Check this post

答案 6 :(得分:0)

我建议使用swiftmailer库,该项目具有非常好的文档并且易于使用。它提供了使用默认PHP mail()函数的几个优点。

http://swiftmailer.org/