0

我收到错误消息,因为无法在“本地主机”端口 25 连接到邮件服务器,...

我的 php.ini 文件的内容是

SMTP = localhost
smtp_port = 25

我使用了以下代码

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

2 回答 2

2

您不能从本地主机发送出站邮件。要测试邮件功能,请安装水星邮件。它应该带有 xampp。为 localhost 域创建电子邮件,例如steward@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

于 2013-03-04T15:42:20.370 回答
1

很明显,在 localhost 的 25 端口上没有运行邮件服务器(或者防火墙阻止了它)。获取并安装一个邮件服务器(windows/linux/mac 有许多免费的——只要确保你的 ISP 允许它),你的脚本就会运行得很好。

我用它来测试,这非常好:http ://smtp4dev.codeplex.com/ 它是一个假的电子邮件服务器,它拦截邮件并将它们转储给你在本地主机上检查和测试。

于 2013-03-04T15:39:56.550 回答