【问题标题】:How do I figure out the smtp_port for my localhost?如何找出我的本地主机的 smtp_port?
【发布时间】:2010-12-11 19:30:15
【问题描述】:

我正在使用发送电子邮件的脚本,但收到以下错误:

警告:mail() [function.mail]:无法在“localhost”端口 25 连接到邮件服务器,请验证 php.ini 中的“SMTP”和“smtp_port”设置或在 C 中使用 ini_set() :\wamp\bin\php\php5.3.0\PEAR\Mail\mail.php 在第 125 行

如何确定我的本地主机的 stmp_port?

编辑:

对不起。我的计算机上没有自己的服务器,我想我也不想设置一台。我没有意识到它需要什么。我确实有一个托管服务提供商,并且想知道如何使用他们的 smtp 信息来发送我的邮件,但如果有人知道该怎么做的话。

根据 Nathan Adams 的回复,我可以使用我的托管服务提供商的 smtp 信息。我到底需要什么来找出在我的 php.ini 文件中放置这些信息的位置?

【问题讨论】:

  • 如果你不知道它是什么,那么你就没有。

标签: php email localhost


【解决方案1】:

您的 PHP 脚本很有可能以匿名系统用户身份运行,即“nobody”或“www-data”。

许多主机限制匿名用户对端口 25(本地)的访问,以防止滥用邮件程序。相反,您可能需要连接到您的实际并在发送邮件之前进行身份验证。

即使用“mydomain.com”“25”而不是“localhost”,使用您喜欢的任何 SMTP 类。 mail() 可能没用了。

请与您的房东再次核实以确认这一点,但我怀疑确实如此。

【讨论】:

    【解决方案2】:

    这不仅仅是您需要知道的端口。您还必须知道您的 smtp 邮件服务器的地址。

    作为 SMTP 的其他电子邮件配置的基础。您至少需要 4 条信息:

    1. SMTP 服务器,例如mail.example.com
    2. SMTP 端口 [25 和 110 是最常用的]
    3. 用户名,例如foo@domain.com
    4. 密码

    代码必须是这样的。

    $from = "Sandra Sender <sender@example.com>";
    $to = "Ramona Recipient <recipient@example.com>";
    $subject = "Hi!";
    $body = "Hi,\n\nHow are you?";
    
    $host = "mail.example.com";
    $username = "smtp_username";
    $password = "smtp_password";
    
    $headers = array ('From' => $from,
      'To' => $to,
      'Subject' => $subject);
    $smtp = Mail::factory('smtp',
      array ('host' => $host,
        'port' => 25
        'auth' => true,
        'username' => $username,
        'password' => $password));
    

    您可能很容易通过您的 gmail 帐户发送电子邮件 - see here

    【讨论】:

    • 感谢您的建议!我什至没有意识到这是一个选择。如果我不能使用我的托管服务提供商,我会进一步调查。
    【解决方案3】:

    如果您在本地主机上运行 SMTP 服务器,则您必须已安装并配置(而且您选择的端口确实很奇怪!= 25...),所以只需阅读您的配置文件以找出其中的位置你安装它运行!更有可能的是,如果您从未听说过它,您可能没有运行任何 SMTP 服务器,然后您的选择是要么这样做(提示:如果你这样做,请使用端口 25,请点赞更容易!-) 找出其他愿意为您提供服务的 SMTP 服务器,并将您的 PHP 配置设置为指向该服务器。

    编辑:既然您在评论中提到您在托管服务提供商上,那么您当然应该询问您的提供商什么主机(可以是本地主机,也可以是其他主机)和端口(所有赌注都失败了!)他们正在为您提供 SMTP 服务。

    【讨论】:

      【解决方案4】:

      如果您没有侦听端口 25 的 SMTP 服务器,那么您很可能没有运行 SMTP 服务器。只有在非常定制的场景下,SMTP 服务器才会被配置为侦听不同的端口。

      您最初的问题的答案是“这取决于”。这取决于您用于 SMTP 的软件(在服务器端)。我不确定是否有一个简单的解决方案来查看“某个”端口上是否有“某个”SMTP 服务器正在运行。

      【讨论】:

        【解决方案5】:

        您是否安装了 smtp 服务器?它在运行吗?不确定您在哪个平台上,但在 Windows 上,您可以从命令行运行“netstat -a”并查找“LISTENING”状态

        【讨论】:

          【解决方案6】:

          您必须运行 SMTP 服务器,否则您需要将 php.ini 中的 SMTP 和 smtp_port 设置为其他人的(您的 ISP、您的托管服务提供商等)。

          【讨论】:

          • 我有一个托管服务提供商。我需要查找什么以及需要在 php.ini 文件中的何处发布?这里? 【邮件功能】;仅适用于 Win32。 ; php.net/smtp SMTP = 本地主机; php.net/smtp-portsmtp_port = 25
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多