【问题标题】:Connection could not be established with host smtp.sendgrid.net :stream_socket_client(): unable to connect to tcp://smtp.sendgrid.net:465无法与主机 smtp.sendgrid.net 建立连接:stream_socket_client():无法连接到 tcp://smtp.sendgrid.net:465
【发布时间】:2020-06-03 07:06:58
【问题描述】:

我正在尝试在 Laravel 中使用 sendgrid 发送邮件,但它正在本地服务器上运行,但是当我将它托管在服务器上时,它给了我以下错误消息:

我在 .env 文件中的邮件设置:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.sendgrid.net
MAIL_PORT=587
MAIL_USERNAME=myusername
MAIL_PASSWORD=XXX
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=info@xyz.com
MAIL_FROM_NAME=xyz

【问题讨论】:

  • 获得相同。在当地工作。你弄明白了吗?
  • @trainoasis:就我而言,这是发送网格方面的问题
  • Ty,对我来说,共享主机阻止了外部 smtp 连接。他们为我们的帐户启用了它们 - 但如果他们不这样做,我会使用 API 方法。

标签: laravel laravel-5 sendgrid


【解决方案1】:

对于 laravel >= 7 你得到这个错误:

无法与主机 smtp.sendgrid.net 建立连接:stream_socket_client():无法连接到 tcp://smtp.sendgrid.net:587(连接尝试失败,因为连接方没有正确一段时间后响应,或建立连接失败,因为连接的主机没有响应

只需更新您的 .env 文件 来自:

MAIL_MAILER=smtp
MAIL_DRIVER=smtp
MAIL_HOST=smtp.sendgrid.net
MAIL_PORT=587
MAIL_USERNAME=apikey
MAIL_PASSWORD=your_sendgrid_api_key
MAIL_ENCRYPTION=tls
MAIL_FROM_NAME="Your Sender Name"
MAIL_FROM_ADDRESS=info@example.com

收件人:

MAIL_MAILER=sendMail
MAIL_DRIVER=sendMail
MAIL_HOST=smtp.sendgrid.net
MAIL_PORT=587
MAIL_USERNAME=apikey
MAIL_PASSWORD=your_sendgrid_api_key
MAIL_ENCRYPTION=tls
MAIL_FROM_NAME="Your Sender Name"
MAIL_FROM_ADDRESS=info@example.com

然后运行此命令以确保 .env 更改与代码同步。

php artisan config:cache

【讨论】:

    【解决方案2】:

    将您的 env 文件更新为:

    MAIL_MAILER=sendmail
    MAIL_HOST=smtp.sendgrid.net
    MAIL_PORT=587
    MAIL_USERNAME=apikey
    MAIL_PASSWORD=apiPassword
    MAIL_ENCRYPTION=tls
    MAIL_FROM_ADDRESS=info@example.com
    MAIL_FROM_NAME="${APP_NAME}"
    

    同样在你的 Laravel 项目的 config 文件夹下寻找

    邮件.php

    并进行如下更改:

    'default' => env('MAIL_MAILER', 'sendmail'),
    

    N/B:SMTP 在本地主机上工作,而 sendmail 在实时服务器上工作。

    【讨论】:

      【解决方案3】:

      如果您说它可以在本地运行但不能在生产服务器上运行,请在您的 Web 主机服务器上尝试 php artisan config:cache。确保正确加载 ENV 配置(如果您的主机不支持 SSH 连接,则需要手动将配置从 ENV 更新到 /app/config/* 文件中。


      如果问题仍然存在,只有两种可能:

      1. 确保您的网络主机允许传出 SMTP 连接。
      2. 确保 sendgrid.net 没有禁止您的 Web 主机传出 SMTP IP 地址。

      【讨论】:

        【解决方案4】:

        我在使用 Linode 服务器时遇到过这种情况。显然,像 Linode 这样的服务提供商会阻止 SMTP 端口,直到您通过支持联系他们并要求他们解除阻止,然后才能使用该端口并发送电子邮件。这就是我的解决方案

        【讨论】:

          【解决方案5】:

          当我迁移到 laravel 9 时,使用 sendgrid 发送不再起作用。 问题是因为新的 symfony 邮件程序尝试使用 ssl 发送,而 tls 是在配置文件中设置的。 所以在配置文件中,我将端口从 587 更改为 465 并且它再次工作。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-11-03
            • 2018-07-06
            • 1970-01-01
            • 2021-11-26
            • 1970-01-01
            • 1970-01-01
            • 2022-09-26
            • 2023-01-14
            相关资源
            最近更新 更多