无法在服务器中的Laravel中发送电子邮件

时间:2018-12-20 12:59:53

标签: php laravel email cpanel

我正在环境文件中进行配置,

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=myemail@gmail.com
MAIL_PASSWORD='mypassword'
MAIL_ENCRYPTION=ssl

我已经从RegistrationController进行了用户注册,并发送电子邮件以验证该用户。它与ubantu一起在本地LAMP服务器中完美运行。但是,在C Panel中遇到以下错误。

  

Swift_TransportException无法使用以下方法建立连接   主机smtp.gmail.com [网络无法访问#101]

这是控制器中的寄存器功能,

protected function register(Request $request)
{
    /** @var User $user */
    $validatedData = $request->validate([
        'name'     => 'required|string|max:255',
        'email'    => 'required|string|email|max:255|unique:users',
        'password' => 'required|string|min:6|confirmed',
    ]);

    try {
        $validatedData['password']      = bcrypt(array_get($validatedData, 'password'));
        $validatedData['activate_code'] = str_random(30).time();
        if($request->has('company') && $request->company=='on')
        {
            $validatedData['role_id']   = 4;
        }
        else
        {
            $validatedData['role_id']   = 5;
        }
        $user                           = app(User::class)->create($validatedData);
    } catch (\Exception $exception) {
        logger()->error($exception);
        return redirect()->back()->with('alert-danger', 'Unable to create new user.');
    }

    $user->notify(new UserRegisteredSuccessfully($user));
    return redirect()->back()->with('alert-success', 'Successfully created a new account. Please check your email and activate your account.');
}

我已经看到过这样的问题,并且有很多疑问,但是对于我来说,这些都无济于事。任何帮助都将受到赞赏。

4 个答案:

答案 0 :(得分:1)

按如下方式更新您的.env文件:

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

答案 1 :(得分:1)

首先,一旦您创建了用于从您的网站发送邮件的gmail帐户,则必须授予您的gmail帐户用于从其他应用程序发送邮件的权限。 为此...

1)转到您的Gmail帐户,然后点击“ settings -> FORWARDING and POP/IMAP”链接。并按照下图所示的说明进行操作...

enter image description here

2)转到此链接https://myaccount.google.com/lesssecureapps?utm_source=google-account&utm_medium=web 并启用如下图所示的内容...

enter image description here

3)确保您的Web应用程序是否正在使用http协议,请使用MAIL_ENCRYPTION=tlsMAIL_PORT=587,否则使用MAIL_ENCRYPTION=sslMAIL_PORT=465

答案 2 :(得分:0)

您需要使用.env配置和帐户进行一些更改

1)将邮件端口更改为587并进行加密

 MAIL_PORT=587
 MAIL_ENCRYPTION=tls

2)在您的电子邮件帐户中启用IMAP以使用该协议

3)允许该应用访问您的帐户

答案 3 :(得分:0)

MAIL_DRIVER=smtp更改为MAIL_DRIVER=sendmail

完成 .env 编辑后,在终端中输入以下命令以清除缓存:php artisan config:cache