我正在尝试发送用户电子邮件验证。我已经更新了环境和邮件配置以适合我的Google Mail。但是,我遇到了Swift_TransportException (530)
错误。
.env
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=okaydots@gmail.com
MAIL_PASSWORD=
mail.php
return [
'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'smtp.gmail.com'),
'port' => env('MAIL_PORT', 587),
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'okaydots@gmail.com'),
'name' => env('MAIL_FROM_NAME', 'Kyle Jeynes'),
],
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('okaydots@gmail'),
'password' => env(''),
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,
'markdown' => [
'theme' => 'default',
'paths' => [
resource_path('views/vendor/mail'),
],
],
'log_channel' => env('MAIL_LOG_CHANNEL'),
];
User.php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable implements MustVerifyEmail
{
use Notifiable;
protected $fillable = [
'name', 'email', 'password',
];
protected $hidden = [
'password', 'remember_token',
];
}
web.php
Route::get('/', function () {
return view('welcome');
});
Auth::routes(['verify' => true]);
Route::get('/home', 'HomeController@index')->name('home');
HomeController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HomeController extends Controller
{
public function __construct()
{
$this->middleware('auth');
$this->middleware('verified');
}
public function index()
{
return view('home');
}
}
这是我收到的确切错误消息:
预期的响应代码为250,但代码为“ 530”,消息为“ 530-5.5.1要求身份验证。有关详细信息,请参见530 5.5.1 https://support.google.com/mail/?p=WantAuthError 133sm47765wme.9-gsmtp“
搜索完此错误后,被告知到Turn on less secure apps。这样做之后,我仍然收到相同的错误。如何允许Laravel发送电子邮件验证/电子邮件?
答案 0 :(得分:1)
请还原您的mail.php
。您只需要更改.env
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=okaydots@gmail.com
MAIL_PASSWORD= #use gmail app password not your gmail password
MAIL_ENCRYPTION=tls
答案 1 :(得分:0)
经过大量的Google搜索之后,我发现mail.php
包含用于配置的env()
方法,因此希望arg 1是.env
文件中的配置名称。
我将mail.php
更改为此,现在可以使用了:
return [
'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'smtp.gmail.com'),
'port' => env('MAIL_PORT', 587),
'from' => [
'address' => env('MAIL_FROM_ADDRESS', 'okaydots@gmail.com'),
'name' => env('MAIL_FROM_NAME', 'Kyle Jeynes'),
],
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'), # Changed
'password' => env('MAIL_PASSWORD'), # Changed
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,
'markdown' => [
'theme' => 'default',
'paths' => [
resource_path('views/vendor/mail'),
],
],
'log_channel' => env('MAIL_LOG_CHANNEL'),
];