Laravel 拉雷维尔:不会';发送电子邮件

Laravel 拉雷维尔:不会';发送电子邮件,laravel,swiftmailer,Laravel,Swiftmailer,在Laravel中使用邮件功能时,我得到如下所示的错误 我尝试了这两种方法:首先将所有数据保存在.env文件中,然后从config/mail.php中获取数据 然后在mail.php中对其进行硬编码,以防无法从中获取 我也尝试了不同的端口,465是预期的,但587和25也没有改变 我也尝试过不同的smtp服务器,也尝试过在其他网站上发送不同的邮件。所以这不是我的服务器关闭或smth那样 我用它来注册用户,然后给他们发送一封确认邮件,让他们点击。它们可以保存在桌子上,但在发送邮件时,它不会消失 我

在Laravel中使用邮件功能时,我得到如下所示的错误

我尝试了这两种方法:首先将所有数据保存在.env文件中,然后从config/mail.php中获取数据

然后在mail.php中对其进行硬编码,以防无法从中获取

我也尝试了不同的端口,465是预期的,但587和25也没有改变

我也尝试过不同的smtp服务器,也尝试过在其他网站上发送不同的邮件。所以这不是我的服务器关闭或smth那样

我用它来注册用户,然后给他们发送一封确认邮件,让他们点击。它们可以保存在桌子上,但在发送邮件时,它不会消失

我还尝试在控制器文件中硬编码to:地址,以防它不是从$data数组中获取的。没有变化

Mail::send('auth.emails.register', ['data' => $data ], function($mail) use($data) {        $mail->from('a@chefpi.com', 'Your Application');
                $mail->subject('Confirm your mail');
                $mail->to($data['email'], $data['name']);
                });                
            return redirect("auth/register")
            ->with("message", "A confirmation link has been sent to your email");           
        }
您可以在错误显示中看到,它确实获得了收件人地址和确认令牌(也保存在表中)

读取的错误如下所示:

 Swift_TransportException in AbstractSmtpTransport.php line 404:
    Connection to server.websitehostserver.net:465 Timed Out
    in AbstractSmtpTransport.php line 404
    at Swift_Transport_AbstractSmtpTransport->_getFullResponse('0') in AbstractSmtpTransport.php line 289
    at Swift_Transport_AbstractSmtpTransport->_readGreeting() in 

        AbstractSmtpTransport.php line 117
        at Swift_Transport_AbstractSmtpTransport->start() in Mailer.php line 79
        at Swift_Mailer->send(object(Swift_Message), array()) in Mailer.php line 386
        at Mailer->sendSwiftMessage(object(Swift_Message)) in Mailer.php line 173
        at Mailer->send('auth.emails.register', array('data' => array('name' => 'aaaaa', 'email' => 'madina@yandex.ru', 'confirm_token' => 'x5nSRdqgPApFWUvwlNcMLmwvMQ1T64IKpfX0IHjqm7zjwfDYEhCSGPixJyNky2XU5')), object(Closure)) in compiled.php line 6222
        at Facade::__callStatic('send', array('auth.emails.register', array('data' => array('name' => 'aaaaa', 'email' => 'madina@yandex.ru', 'confirm_token' => 'x5nSRdqgPApFWUvwKtwdzwT64IKpfX0IHjqm7zjwfDYEhCSGPixJyNky2XU5')), object(Closure))) in AuthController.php line 84
        at Mail::send('auth.emails.register', array('data' => array('name' => 'aaaaa', 'email' => 'mayarodina@yandex.ru', 'confirm_token' => 'x5nSRdqgPApFbHWqszKtwdzwT64IKpfX0IHjqm7zjwfDYEhCSGPixJyNky2XU5')), object(Closure)) 

    in AuthController.php line 84
我正在添加完整控制器,以防万一:

<?php

namespace App\Http\Controllers\Auth;

use App\User;
use Validator;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
use Illuminate\Http\Request;
use Mail;
use Auth;
use Illuminate\Support\Facades\Input;

class AuthController extends Controller
{
    /*

    use AuthenticatesAndRegistersUsers;

    /**
     * Create a new authentication controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('guest', ['except' => 'getLogout']);
    }

    public function postRegister(Request $request){

        $rules = [
            'name' => 'required|min:3|max:16|regex:/^[a-záéíóúàèìòùäëïöüñ\s]+$/i',
            'email' => 'required|email|max:255|unique:users,email',
            'password' => 'required|min:6|max:18|confirmed',
        ];

        $messages = [
            'name.required' => 'This field is required',

        ];

        $validator = Validator::make($request->all(), $rules, $messages);

        if ($validator->fails()){
            return redirect("auth/register")
            ->withErrors($validator)
            ->withInput();
        }
        else{
            $user = new User;
            $data['name'] = $user->name = $request->name;
            $data['email'] = $user->email = $request->email;
            $user->password = bcrypt($request->password);
            $user->remember_token = str_random(100);
            $data['confirm_token'] = $user->confirm_token = str_random(100);
            $user->save();

            Mail::send('auth.emails.register', ['data' => $data ], function($mail) use($data) {

                $mail->from('a@chefpisos.com', 'Your Application');
                $mail->subject('Confirm your mail');
                $mail->to($data['email'], $data['name']);

            });

            return redirect("auth/register")
            ->with("message", "A confirmation link has been sent to your email");



        }


    }

    public function confirmRegister($email, $confirm_token)
    {


    $user = new User;

    $the_user = $user->select()->where('email', '=', $email)
                               ->where('confirm_token', '=', $confirm_token)
                               ->get();

    if (count($the_user) > 0)
    {
       $active = 1;
       $confirm_token = str_random(100);
       $user ->where('email', '=', $email)
       ->update(['active' => $active, 'confirm_token' => $confirm_token]);
       return redirect('auth/register')
       ->with("message", 'Congrats'. $the_user[0]['name'] . 'account activated');
    }

    else{

        return redirect('/');
    }

    }

    public function postLogin(Request $request){







       if (Auth::attempt(['email' => $request->input('email'), 'password' => $request->input('password'), 'active' => 1])) {

             return redirect()->intended($this->redirectPath());   

            }

            else{
                $rules = [
                    'email' => 'required|email',
                    'password' => 'required',
                ];

                $messages = [
                    'email.required' => 'El campo email es requerido',
                    'email.email' => 'El formato de email es incorrecto',
                    'password.required' => 'El campo password es requerido',
                ];

                $validator = Validator::make($request->all(), $rules, $messages);

                return redirect('auth/login')
                ->withErrors($validator)
                ->withInput()
                ->with('message', 'Error al iniciar sesión');
    }


    }









}

与我的网络托管提供商声明的我必须使用465相反,我选择了587,我不知道为什么,但这次它起了作用

奇怪的是,我有另一个网站托管在同一台服务器上,我在那里使用的465没有任何问题

然而,它不会通过我的另一个web中的那个端口输出。我永远也不知道为什么

我在互联网上读过所有类似的案例,它们都与端口465有问题,最后使用了另一个

如果你遇到一个类似的问题,只需复制我上面的代码,它是完整的和工程


感谢所有关注过这个问题的人。

与我的网络托管提供商所说的我必须使用465相反,我选择了587,我不知道为什么,但这次成功了

奇怪的是,我有另一个网站托管在同一台服务器上,我在那里使用的465没有任何问题

然而,它不会通过我的另一个web中的那个端口输出。我永远也不知道为什么

我在互联网上读过所有类似的案例,它们都与端口465有问题,最后使用了另一个

如果你遇到一个类似的问题,只需复制我上面的代码,它是完整的和工程

感谢所有关注这个问题的人