尝试在php中发送邮件时出错

时间:2013-03-04 15:29:12

标签: php email

我收到错误消息为 无法连接到& quot,localhost& quot,port 25,...

的邮件服务器

我的php.ini文件的内容是

SMTP = localhost
smtp_port = 25

我使用了以下代码

mail("xyz@gmail.com","test","msg","from abc@gmail.com");

2 个答案:

答案 0 :(得分:2)

您无法从localhost发送出站邮件。要测试邮件功能,请安装汞邮件。它应该与xampp一起提供。为steward @ localhost等localhost域创建电子邮件。你可以使用别名。使用从一个收件箱发送邮件到另一个收件箱进行测试。您需要许可版本的汞邮件才能发送出站邮件。

另一种选择是在远程服务器上运行测试。确保发送服务器识别发件人电子邮件。就像您无法使用正在显示的设置发送gmail消息一样。

如果从gmail发送是您的目标,那么stackoverflow已经充满了关于如何使用gmail发送邮件的答案,即使使用codeigniter也是如此。需要一些吗?

以下是您的要求:使用Gmail发送邮件:

   require_once "Mail.php";

    $from = "<from.gmail.com>";
    $to = "<to.yahoo.com>";
    $subject = "Hi!";
    $body = "Hi,\n\nHow are you?";

    $host = "ssl://smtp.gmail.com";
    $port = "465";
    $username = "myaccount@gmail.com";  //<> give errors
    $password = "password";

    $headers = array ('From' => $from,
      'To' => $to,
      'Subject' => $subject);
    $smtp = Mail::factory('smtp',
      array ('host' => $host,
        'port' => $port,
        'auth' => true,
        'username' => $username,
        'password' => $password));

    $mail = $smtp->send($to, $headers, $body);

    if (PEAR::isError($mail)) {
      echo("<p>" . $mail->getMessage() . "</p>");
     } else {
      echo("<p>Message successfully sent!</p>");
     }

?>  <!-- end of php tag-->

在此处获取信息:https://stackoverflow.com/a/2748837/827224

如果您使用的是codeigniter或任何PHP电子邮件类(如PHPMailer),您甚至可以执行更多操作 在phpclasses.org中搜索电子邮件类。一个例子是: http://www.phpclasses.org/blog/package/9/post/1-Sending-email-using-SMTP-servers-of-Gmail-Hotmail-or-Yahoo-with-PHP.html

最后,这是一个你可以使用的课程:

http://www.phpclasses.org/package/7834-PHP-Send-e-mail-messages-Gmail-users-via-SMTP.html

答案 1 :(得分:1)

很明显,端口25上的本地主机上没有运行邮件服务器(或防火墙阻止它)。获取并安装一个邮件服务器(windows / linux / mac有许多免费的 - 只需确保你的ISP允许它),你的脚本就可以运行了。

我用它进行测试非常好:http://smtp4dev.codeplex.com/ 它是一个虚假的电子邮件服务器,拦截邮件并转储它们,供您检查和测试localhost。