2016-10-25 3 views
0

Nach langen Suchen im Forum kann ich keine hilfreiche Lösung für meinen Fall finden.
Ich habe viele Funktionen zum Senden von E-Mails in Laravel und immer funktioniert das gut.
Diesmal bekam ich einen Fehler wie Sie unten sehen:E-Mail senden in Laravel 5 funktioniert nicht

ErrorException in StreamBuffer.php line 95:
stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

Hier meine .env Datei

APP_ENV=local 
APP_DEBUG=true 
APP_KEY=base64:FMtA/k/okcPZB/HbWGbw5YiBM4EC3njxxLbgcdM1GrA= 
APP_URL=http://localhost 

DB_HOST=localhost 
DB_PORT=3306 
DB_DATABASE=myDB 
DB_USERNAME=root 
DB_PASSWORD= 

CACHE_DRIVER=file 
SESSION_DRIVER=file 
QUEUE_DRIVER=sync 

REDIS_HOST=127.0.0.1 
REDIS_PASSWORD=null 
REDIS_PORT=6379 

MAIL_DRIVER=smtp 
MAIL_HOST=smtp.gmail.com 
MAIL_PORT=587 
[email protected] 
MAIL_PASSWORD=<<Here_my_password>> 
MAIL_ENCRYPTION=tls 

MAIL_SENDER=Administration 

Hier ist meine Funktion der E-Mail (in der Steuerung Auth) zu senden:

public function register(Request $request) 
{ 
    $this->validateLogin($request); 

    $token = hash('sha256', str_random(100) . time(), false); 
    $user = new User(); 
    $user->email = $request->get('email'); 
    $user->password = bcrypt($request->get('password')); 
    $user->remember_token = $token; 
    //$user->save(); 

    $sent = Mail::send('auth.emails.createAccount', ['token' => $token], function ($m) use ($user) { 
     $m->from(getenv('MAIL_USERNAME'), getenv('MAIL_SENDER')); 

     $m->to($user->email, $user->email)->subject(config('constants.AccountCreated')); 
    }); 

    if($sent == 1) 
    { 
     $msg = Lang::get('messages.EmailSent'); 
     $this->showLoginForm($msg); 
    } 
    else 
    { 
     return redirect('/login')->withErrors([ 
      'email' => Lang::get('messages.UserAddingError') 
     ]); 
    } 
} 

Ich habe versucht, das Protokoll von Tls zu ssl zu ändern, auch das Prot von 587 zu 465
Ich habe dieses Problem nur mit t sein Projekt und ich kann nicht verstehen warum, trotz aller Suchen, die ich gemacht habe ...

Irgendwelche Vorschläge bitte? alot
Thanks :)

Antwort

0

Ihr Stammzertifikat fehlt oder beschädigt ist, versuchen Sie eine

# 1) Download a valid root ca 
http://curl.haxx.se/ca/cacert.pem 

# 2) Setup php.ini to point it 
openssl.cafile=C:\php5\etc\cacert.pem 

Installation sicherzustellen, dass sie geladen werden, überprüfen Sie diese Konsole Befehlsantwort

php -r 'var_dump(openssl_get_cert_locations()); 

Sie benötigen um Ihren Webserver neu zu starten


Sie können auch die ssl-Peer-Verifizierung in php.ini deaktivieren, aber es wird nicht empfohlen (bitte nicht in der Produktion tun!)

openssl.verify_peer 0 

Nützliche Dokumente: http://php.net/manual/migration56.openssl.php

+0

ich unter Windows 10 bin, dass ein Ubuntu Befehl –

+0

ist Sie versuchen können [installieren sie] (http://www.thewindowsclub.com/manage -trusted-root-zertifikate-windows) aber ihre beste wette ist es, Peer Verifikation zu deaktivieren –

+0

Ich kann es nicht deaktivieren, wie Sie mir gesagt haben, dass in der Produktion nicht empfohlen wird ... –