警告:mail() [function.mail]:无法在“localhost”端口 25 连接到邮件服务器

Posted

技术标签:

【中文标题】警告:mail() [function.mail]:无法在“localhost”端口 25 连接到邮件服务器【英文标题】:Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25 【发布时间】:2011-01-21 00:18:03 【问题描述】:

我一直在尝试在我正在构建的网站上设置忘记密码功能,但每次尝试加载页面时都会遇到错误:

,请验证 php.ini 中的“SMTP”和“smtp_port”设置或使用 ini_set()

我该如何解决这个问题?

这是我目前的代码:

<?php

            if (array_key_exists('forgot',$_POST)) 

      $email = $_POST['email']; 

      mysql_select_db($database_speedycms, $speedycms);
      $query_email = "SELECT * FROM tbl_users WHERE email='$email'";
      $email = mysql_query($query_email, $speedycms) or die(mysql_error());
      $row_email = mysql_fetch_assoc($email);
      $totalRows_user = mysql_num_rows($email);

      mysql_query("SELECT * FROM users WHERE email='$email'");

      if($totalRows_user == 0)

      
      echo "<span class='form2'>We're sorry, but we could not find a user with that email address.<p>Please try again.<p>
      <a href='forgotpassword.php' class='form'>Return</a></span>";
      

      else

      


        // create a random password 
      function createRandomPassword()  
      $chars = "abcdefghijkmnopqrstuvwxyz023456789"; 
         srand((double)microtime()*1000000); 
         $i = 0; 
         $pass = '' ; 
      while ($i <= 7)  
            $num = rand() % 33; 
            $tmp = substr($chars, $num, 1); 
            $pass = $pass . $tmp; 
            $i++; 
           
         return $pass; 
      
      $password = createRandomPassword(); 


      // generate email

      $username = $row_email['username'];
      $msg  = "Your new login information is:\n\n";
      $msg .= "Username: $username\n";
      $msg .= "Password: $password\n";

      mail("$email", "Speedy CMS Login Information", "$msg", "From:noreply@domain.com");

      // display message  

      echo "<span class='form2'>Thanks. Your new password has been sent to <i>".$row_email['email']."</i>.<p>
      <a href='index.php' class='form'>Return</a></span>";

      

      exit;

      

    ?>

【问题讨论】:

您实际上是在本地主机上运行邮件服务器吗? telnet localhost 25. 是的...不知道你需要设置一个 我正在使用 uk2.net...他们现在已经给了我详细信息。我猜不需要设置? 【参考方案1】:

看起来您的服务器没有运行 smtp 邮件服务器。您可以使用这些函数来设置不同的 smtp 服务器:

ini_set('SMTP', "server.com");
ini_set('smtp_port', "25");
ini_set('sendmail_from', "email@domain.com");

当然你必须知道一个活跃的 smtp 服务器。

祝你好运!

【讨论】:

有什么我可以使用的 smtp 服务器的想法吗? 也许你可以使用你的ISP的邮件服务器。有些不需要登录。【参考方案2】:

您必须在php.ini 文件上配置这些值

SMTP = smtp.yourdomain.com  
smtp_port = 25 
username = info@yourdomain.com
password = yourmailpassord
sendmail_from = info@yourdomain.com

您可以提供与 Outlook 配置中相同的详细信息。一些服务器也在检查“sendmail_from”地址。

【讨论】:

【参考方案3】:

您的网站运行的系统上似乎没有运行 SMTP 服务器。它是什么样的服务器?

【讨论】:

我正在使用 xampp 进行本地开发 好的,试着让它在同样运行着 SMTP 服务的服务器上运行。或者将您的 PHP 配置为使用外部邮件服务器。 你能推荐任何免费的外部邮件服务器吗? 没有免费的外部邮件服务器(至少是可靠的)这样的东西......想象一下这些服务器会滥用垃圾邮件!【参考方案4】:

看起来您正在使用本地 PHP 安装(使用 WAMPSERVER、EasyPHP 或其他),因为“真实”主机很少错误配置其服务器。如果是这种情况,请编辑 php.ini 并使用您的 ISP 设置示例:

[mail function]
SMTP = mail.yourdomain.com
smtp_port = 25

【讨论】:

我不确定 Google 使用其 SMTP 服务器的规则。我很确定您必须通过身份验证才能使用他们的 SMTP 服务器,而且我在 PHP.ini 中看不到这种设置...但是您可以肯定地使用您的 ISP 设置。【参考方案5】:
Warning: mail(): SMTP server response: 550 Access denied - Invalid HELO name (See 
RFC2821 4.1.1.1) in C:\AppServ\www\VOGUE\email.php on line 38

after add following codes...............

ini_set('SMTP', "server.com");

ini_set('smtp_port', "25");

ini_set('sendmail_from', "email@domain.com");

how to add password of "sendmail_from" account???????

【讨论】:

也需要...我收到警告:mail() SMTP 服务器响应 571 5.7.1 消息被拒绝。需要身份验证....

以上是关于警告:mail() [function.mail]:无法在“localhost”端口 25 连接到邮件服务器的主要内容,如果未能解决你的问题,请参考以下文章

警告:mail() [function.mail]:无法在“localhost”端口 25 连接到邮件服务器

警告:mail() [function.mail]:无法在“localhost”端口 25 连接到邮件服务器,请验证您的“SMTP”和“smtp_port”,Windows XP 的 XAMPP

php mail function error -> Warning: mail() [function.mail]: SMTP server response: 530 5.7.0 Must

本地主机上的 php mail() 函数

SMTP 服务器问题,PHP 邮件

通过PHP发送邮件