返回

无法与主机“mailpit:1025”建立连接:Laravel 发送 Gmail 邮件的完整指南

php

无法与主机“mailpit:1025”建立连接:问题解决指南

问题概述

在通过 Laravel 和 Gmail 发送电子邮件时,你可能会遇到以下错误:

无法与主机“mailpit:1025”建立连接:stream_socket_client():php_network_getaddresses:mailpit 的 getaddrinfo 失败:没有这样的主机。

这个错误很令人困惑,因为应用程序应该连接到 Gmail,而不是 Mailpit。

解决步骤

要解决此问题,请按照以下步骤进行操作:

  • 检查 .env 文件 :确保 .env 文件正确配置了以下设置:

    MAIL_MAILER=smtp
    MAIL_HOST=smtp.gmail.com
    MAIL_PORT=587
    MAIL_USERNAME=[你的 Gmail 地址]
    MAIL_PASSWORD=[你的 Google 应用密码]
    MAIL_ENCRYPTION=ssl
    
  • 检查路由 :确保路由正确,如下所示:

    Route::get('/sendMail', function () {
        try {
            Mail::to('[收件人电子邮件地址]')->send(new Subscribe());
        } catch (Throwable $e) {
            return '<div>FAILED ' . $e . '</div>';
        }
    });
    
  • 清除缓存 :运行以下命令清除缓存:

    php artisan cache:clear
    php artisan config:clear
    
  • 检查配置文件 :检查 config/mail.php 文件,确保没有配置 stream 设置:

    'stream' => [
        'ssl' => [
            'allow_self_signed' => true,
            'verify_peer' => false,
            'verify_peer_name' => false,
        ],
    ],
    
  • 重新启动应用程序 :重启你的 Laravel 应用程序以使更改生效。

其他注意事项

  • 尝试将端口 587 更改为 465。
  • 确保你的防火墙允许与 Gmail 的连接。
  • 检查你的 DNS 设置是否正确。

结论

通过遵循这些步骤,你应该能够解决“无法与主机“mailpit:1025”建立连接”的错误,并成功通过 Laravel 和 Gmail 发送电子邮件。

常见问题解答

  1. 为什么我的应用程序会连接到 Mailpit 而不是 Gmail?
    这可能是由于 .env 文件中配置不正确或路由设置错误。

  2. 如何检查我的 DNS 设置是否正确?
    你可以使用诸如 dignslookup 等命令来查询你的 DNS 设置。

  3. 为什么我需要清除缓存?
    清除缓存可以确保你的应用程序加载最新的配置更改。

  4. 我尝试了所有步骤,但仍然无法发送电子邮件。怎么办?
    请检查你的 Gmail 帐户设置,确保已启用 IMAP/SMTP 访问。你还可以尝试联系你的邮件服务提供商以获取支持。

  5. 我应该在什么时候使用 SSL 加密?
    SSL 加密应该始终用于保护敏感信息,例如电子邮件密码。