【问题标题】:Laravel: Mail connection errorLaravel:邮件连接错误
【发布时间】:2017-12-28 19:10:30
【问题描述】:

我有一个在 BLUEHOST 共享服务器上工作的 laravel 5.2 项目,我在配置我的电子邮件应用程序时遇到了麻烦,我没有使用其他邮件服务(如 mailgun),只是 laravel 的服务,我用我的 gmail 帐户尝试过他们的配置和这工作正常(仅用于测试),所以我需要使用 BLUEHOST 邮件服务进行设置。

我的这些数据来自 BLUEHOST 提供的电子邮件帐户配置:

Email Settings

Mail Server Username: info@domain.com

Standard (without SSL)

Incoming Mail Server: mail.domain.com
Supported Ports: 143 (IMAP), 110 (POP3)
Outgoing Mail Server: mail.domain.com
Supported Port: 26 (server requires authentication)

Private (with SSL)

Incoming Mail Server: box668.bluehost.com (SSL)
Supported Ports: 993 (IMAP), 995 (POP3)
Outgoing Mail Server: box668.bluehost.com (SSL)
Supported Port: 465 (server requires authentication)
Supported Incoming Mail Protocols: POP3, IMAP
Supported Outgoing Mail Protocols: SMTP

我的配置/mail.php:

<?php

return [

    'driver' => env('MAIL_DRIVER', 'smtp'),

    'host' => env('MAIL_HOST', 'mail.domain.com'),

    'port' => env('MAIL_PORT', 465),

    'from' => ['address' => 'info@domain.com', 'name' => 'Some name'],

    'encryption' => env('MAIL_ENCRYPTION', 'ssl'),

    'username' => env('MAIL_USERNAME'),

    'password' => env('MAIL_PASSWORD'),

    'sendmail' => '/usr/sbin/sendmail -bs',

];

我的 .env 电子邮件设置:

MAIL_DRIVER=smtp
MAIL_HOST=mail.domain.com
MAIL_PORT=465
MAIL_USERNAME=info@domain.com
MAIL_PASSWORD=info123+
MAIL_ENCRYPTION=ssl

我尝试了两个选项(标准(不带 SSL)和私有(带 SSL))但是我得到了这个错误:

Swift_TransportException in StreamBuffer.php line 269:
Connection could not be established with host mail.domain.com [ #0]

怎么了?或者我的客户必须购买 Mailgun 的订阅?

【问题讨论】:

    标签: php laravel email ssl shared-hosting


    【解决方案1】:

    我只是自己想出来的!我将重申 Matthijs 所说的话,然后我的原始贡献在下面以粗体显示——这就是为我解决的问题。

    这就是我所做的,我不知道你已经尝试过什么,但这对我有用。

    我 ssh 进入我的服务器并 cd 进入我的 laravel 应用程序。我应该提到我托管在 Vultr 而不是 Bluehost 上,但它应该可以正常工作......我想?

    cd /var/www/laravel
    

    您将要打开 env 文件并进行一些配置。

    ls -a
    nano .env
    

    在您的服务器上进行更改,然后运行 ​​artisan config cache 命令

    php artisan cache:command
    

    如果您通过 GMail 运行,则需要让您接受安全性较低的应用程序。

    如果这仍然不起作用,那么您实际上需要进入 config 文件夹并更改您的 mail.php 文件以匹配 env 文件中的信息。这是我的样子:

    'driver' => env('MAIL_DRIVER', 'smtp'),
    
    
    'host' => env('MAIL_HOST', 'smtp.gmail.com'),
    
    
    'port' => env('MAIL_PORT', 587),
    
    
    'from' => [
        'address' => env('MAIL_FROM_ADDRESS', 'spkellydev@gmail.com'),
        'name' => env('MAIL_FROM_NAME', 'Sean!'),
    ],
    
    
    'encryption' => env('MAIL_ENCRYPTION', 'tls'),
    
    
    'username' => env('MAIL_USERNAME'),
    
    'password' => env('MAIL_PASSWORD'),
    
    
    'sendmail' => '/usr/sbin/sendmail -bs',
    

    然后我有一些根本不相关的自定义设置。希望这会有所帮助,朋友!

    【讨论】:

    • 据我所知,没有命令如:php artisan cache:command
    【解决方案2】:

    有时可能会在 laravel 中“缓存”。

    使用此命令再试一次:

    php artisan config:clear
    

    如果不起作用,请尝试重新启动 xampp。

    检查问题是否出在您的主机或您的配置的另一个选项是使用 Gmail 服务器发送测试电子邮件。

    把它放在你的.env

    MAIL_DRIVER=smtp
    MAIL_HOST=smtp.gmail.com
    MAIL_PORT=587
    MAIL_USERNAME=myemail@gmail.com
    MAIL_PASSWORD=apppassword
    MAIL_ENCRYPTION=tls
    

    创建或使用任何gmail帐户并启用less secure apps更多信息here

    首先登录到您的 gmail 帐户,然后在我的帐户下 > 登录并 安全>登录谷歌,启用两步验证,然后你 可以生成应用程序密码,您可以在 .env 中使用该应用程序密码 文件。

    您的 .env 文件将如下所示

    MAIL_DRIVER=smtp MAIL_HOST=smtp.gmail.com MAIL_PORT=587 MAIL_USERNAME=myemail@gmail.com MAIL_PASSWORD=apppassword MAIL_ENCRYPTION=tls

    在更改后不要忘记运行php artisan config:cache 你的 .env 文件(或重启你的服务器)。

    来源here

    【讨论】:

    • 嗨,感谢您的回复,我尝试使用 GMAIL 并且它工作正常(仅用于测试),但是这个应用程序需要从 BLUEHOST 服务器发送邮件:( PD:我执行了 php artisan config:clear 和它也不起作用
    猜你喜欢
    • 2017-01-19
    • 2017-04-04
    • 2016-03-29
    • 1970-01-01
    • 2013-12-11
    • 2019-08-28
    • 2016-05-24
    • 1970-01-01
    • 2020-08-26
    相关资源
    最近更新 更多