550 Bad HELO-主机模拟域名Laravel

时间:2019-03-21 11:56:21

标签: php laravel email laravel-5

我正在尝试设置包含“密码重置”功能的Laravel身份验证。但是,当我尝试发送电子邮件时,我总是犯错误。我得到的错误是:

Expected response code 250 but got code "550", with message "550 Bad HELO - Host impersonating domain name 

我在Cloudflare中使用Laravel 5.6。我的托管人说,这可能是问题所在,但我已经尝试禁用Cloudflare信息中心内的所有Cloudflare DNS功能,但这没有用。我确定我使用了正确的邮件设置,因为它们在我的手机和任何其他设备上都能正常工作。 另外,我已经尝试过切换端口,无论我是否填写有效端口都没关系,它会一直给我这个错误。

3 个答案:

答案 0 :(得分:2)

Laravel 5.6 使用 $_SERVER["SERVER_NAME"] 作为你的本地域。 您应该将本地域更改为您的 MAIL_HOST

这对我有用:

config/mail.php

'localdomain' => env('MAIL_HOST')

您应该对供应商进行一些更改: 供应商/swiftmailer/swiftmailer/lib/dependency_maps/transport_deps.php

    //->asValue(!empty($_SERVER['SERVER_NAME']) && '' === preg_replace('/(?:^\[)?[a-zA-Z0-9-:\]_]+\.?/', '', $_SERVER['SERVER_NAME']) ? trim($_SERVER['SERVER_NAME'], '[]') : '127.0.0.1')
    ->asValue(config('mail.localdomain'))

替换注释代码,

我知道这是最糟糕的解决方案,但似乎没有其他解决方案。

答案 1 :(得分:0)

我遇到了同样的问题,我尝试了上面的答案,但它没有帮助我,但是由于奇怪的原因,以下对我有用......

在您的 /config/mail.php 中添加以下行:

'localdomain' => 'localhost'

别问我为什么xD

答案 2 :(得分:0)

@bardia-mazaheri 是对的,但更好的解决方案是这样做:

class AppServiceProvider extends ServiceProvider
{
    public function register()
    {
        // There is a bug in which the Swift library loads 'transport.localdomain' value from $_SERVER['SERVER_NAME']
        // which results to wrong host name for email server and causes an error:
        //   Expected response code 250 but got code "550", with message "550 Bad HELO - Host impersonating domain name
        // described here https://stackoverflow.com/questions/55279922/550-bad-helo-host-impersonating-domain-name-laravel
        \Swift_DependencyContainer::getInstance()
            ->register('transport.localdomain')
            ->asValue('mail.domain.com');
    }
}