【问题标题】:laravel email cannot connect to mail serverlaravel 电子邮件无法连接到邮件服务器
【发布时间】:2019-09-08 00:27:53
【问题描述】:

我试图在用户注册后从我的 laravel 应用程序发送电子邮件,但它一直在网络选项卡中给我这个错误,

"message": "Connection could not be established with host mail.i-scbank.com [ #0]

应用托管在共享主机(cpanel)中

我尝试使用 mailtrap 并且它有效,但是当我尝试使用我的邮件服务器时,我收到了该错误消息,我什至创建了一个新的电子邮件帐户,但它仍然无法正常工作,

这是我的 .env 代码

MAIL_DRIVER=smtp 
MAIL_HOST=mail.eloike.com
MAIL_PORT=587
MAIL_USERNAME=info@eloike.com
MAIL_PASSWORD=*****
MAIL_FROM_ADDRESS=info@eloike.com
MAIL_ENCRYPTION=tls
MAIL_FROM_NAME="Stones"

这是我的 config/mail.php 代码

<?php
return [
    'driver' => env('MAIL_DRIVER', 'smtp'),
    'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
    'port' => env('MAIL_PORT', 587),
    'from' => [
        'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'),
        'name' => env('MAIL_FROM_NAME', 'Example'),
    ],
    'encryption' => env('MAIL_ENCRYPTION', 'tls'),
    'username' => env('MAIL_USERNAME'),
    'password' => env('MAIL_PASSWORD'),
    'sendmail' => '/usr/sbin/sendmail -bs',
    'markdown' => [
        'theme' => 'default',
        'paths' => [
            resource_path('views/vendor/mail'),
        ],
    ],
];

请问我做错了什么以及如何发送电子邮件

【问题讨论】:

  • 你试过MAIL_ENCRYPTION=ssl吗?
  • 是的,但还是不行
  • 不是解决方案,但如果您更改了 .env 文件中的任何内容,请确保执行 php artisan config:cache 以使其生效。

标签: php laravel email laravel-5


【解决方案1】:

您必须将mail.eloike.com 更改为stmp.eloike.com

【讨论】:

  • 可能是防火墙问题?为您的邮件客户端。你能关闭你的防火墙吗?请再试一次。
  • 它是共享主机
  • 你可以为这个问题开一张票:)
  • 我将它更改为我在另一台服务器中的第二个电子邮件服务器,但它不起作用
  • 好吧,我认为是缓存问题。我们需要清除缓存,但您告诉我共享主机,也许我们可以使用 php exec 执行 php artisan 命令? php artisan 配置:缓存 php artisan 缓存:清除
【解决方案2】:

端口可能被防火墙阻止,或者访问受到限制。

您可以执行端口映射以检查:

nmap -p 587 -T4 -v -Pn mail.eloike.com
[...]
PORT    STATE    SERVICE
587/tcp filtered submission

filtered 意味着 nmap 并不真正知道端口状态是什么,因为某些东西正在过滤流量。

您也可以尝试使用 openssl 作为客户端进行连接:

openssl s_client -connect mail.eloike.com:587

我有这个输出:

connect:errno=11

这意味着连接被拒绝。

如需更多信息,您必须联系您的供应商,或更改邮寄者!

【讨论】:

    【解决方案3】:

    SMTP 端口 587 是 STARTTLS 端口,而不是 TLS。这意味着:

    • 与邮件服务器的初始连接未加密(明文)
    • 邮件服务器应在其问候消息中宣传 STARTTLS,并且
    • 在问候语中看到 STARTTLS 的客户端应发出 STARTTLS 命令以在发送凭据或任何其他数据之前启动加密连接。

    尝试立即建立加密连接会失败,例如:

    $ openssl s_client -4 -host mail.eloike.com -port 587
    CONNECTED(00000003)
    140052717310400:error:1408F10B:SSL routines:ssl3_get_record:wrong version number:../ssl/record/ssl3_record.c:252:
    # ...
    

    尝试建立使用 STARTTLS 升级的未加密连接将成功,例如:

    $ openssl s_client -4 -host mail.eloike.com -port 587 -starttls smtp
    CONNECTED(00000003)
    # ...
    250 HELP
    

    您需要阅读 cPanel 以查看它是否可以支持传出 STARTTLS 连接(我知道它可以支持传入连接)。

    【讨论】:

      猜你喜欢
      • 2019-12-06
      • 2015-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-11
      • 2016-05-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多