2016-04-01 20 views
1

メール機能をLaravelで使用すると、以下のエラーが表示されます。Laravel:メールを送信しない

私は両方最初は.envファイル内のすべてのデータを有し、かつ、それはそこからそれを取得していなかった場合には、その後mail.phpでそれをハードコーディングのconfig/mail.phpから

を、それを拾って試してみました

私はまた、異なるポートを試しましたが、予想されたポートは465でしたが、587と25でも変更はありませんでした。

私はまた、別のsmtpサーバーを試してみました。私は別の(動作する)メールを他のウェブサイトで試しました。だから、それは私のサーバーがダウンしていないか、そういうものです。

これを使用してユーザーを登録し、確認メールを送信してクリックします。彼らはテーブルに救われますが、メールを送る時には外に出ません。

$データ配列からコントローラファイルを取得できない場合に備えて、コントローラファイルのTo:アドレスをハードコードしようとしました。変化なし。

あなたはそれを解決するために取得し、(また、表に保存された)Confirm_tokenないというエラー表示で見ることができる
Mail::send('auth.emails.register', ['data' => $data ], function($mail) use($data) {  $mail->from('[email protected]', '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' => '[email protected]', 'confirm_token' => 'x5nSRdqgPApFWUvwlNcMLmwvMQ1T64IKpfX0IHjqm7zjwfDYEhCSGPixJyNky2XU5')), object(Closure)) in compiled.php line 6222 
     at Facade::__callStatic('send', array('auth.emails.register', array('data' => array('name' => 'aaaaa', 'email' => '[email protected]', 'confirm_token' => 'x5nSRdqgPApFWUvwKtwdzwT64IKpfX0IHjqm7zjwfDYEhCSGPixJyNky2XU5')), object(Closure))) in AuthController.php line 84 
     at Mail::send('auth.emails.register', array('data' => array('name' => 'aaaaa', 'email' => '[email protected]', '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('[email protected]', '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'); 
    } 


    } 









} 

答えて

0

私のウェブホスティング私が465を使用しなければならないと言っているプロバイダ、私は587のために行きました、そして、私は理由を知らないが、今度はそれが働いた。

奇妙なことは、同じサーバーに別のWebサイトがホストされていて、問題なく465を使用しているということです。

しかし、他のウェブのそのポートを通って出てこないでしょう。なぜ私は決して知りません。

私はインターネット上のすべての同様のケースを読んでおり、それらのすべてがポート465で問題を抱えており、最後にもう1つを使用して作業しました。

同様の問題が発生した場合は、上記のコードをコピーしてください。完全であり、動作します。

問題を見ていただいたすべての方々に感謝します。

関連する問題