[php] Laravel 5 이메일을 사용하려고합니다

URL을 입력하여 지정된 사용자에게 이메일을 보내려고하는데 다음과 같은 오류가 발생합니다.

AbstractSmtpTransport.php 383 줄의 Swift_TransportException : 응답 코드 250이 예상되었지만 메시지 “530”과 함께 코드 “530”이 표시됨 5.7.1 인증 필요

지금까지는 Gmail에서 작동하도록 노력하고 있습니다. 이 기능을 작동 시키려면 어떻게해야합니까?

이것은 지금까지 내가 가진 것입니다 : mail.php

<?php
    return [
        'driver' => env('MAIL_DRIVER',' smtp'),
        'host' => env('MAIL_HOST', 'smtp.gmail.com'),
        'port' => env('MAIL_PORT', 587),
        'from' => ['address' =>"MyUsername@gmail.com" , 'name' => "example"],
        'encryption' => 'tls',
        'username' => env('MyUsername@gmail.com'),
        'password' => env('MyPassword'),
        'sendmail' => '/usr/sbin/sendmail -bs',
        'pretend' => false,
    ];

이것이 내가 경로에 가지고있는 것입니다 :

Route::get('test', function() {
    Mail::send('Email.test', [], function ($message) {
        $message->to('example@gmail.com', 'HisName')->subject('Welcome!');
    });
});

이것이 내 컨트롤러에있는 것입니다.

class MailController extends Controller
{
    public function Sending_Email()
    {
        $this->call('GET','Email.test');
        return View('Email.test');
    }
}

그리고 이것은 내 .env 파일에 있습니다.

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=MyUsername@gmail.com
MAIL_PASSWORD=MyPassword



답변

나는 그것이 당신을 위해 지금 @ Vantheman6 작동한다는 것을 알고 있지만 이것이 다른 누군가와 같은 경우 나를 위해 일한 것입니다.

사용중인 메일 서비스의 세부 정보를 내 .env 파일에 추가했습니다. 다음 세부 사항을 확인하십시오

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=MyUsername@gmail.com
MAIL_PASSWORD=MyPassword

.env 파일의 내용이 정확합니다.

참고 : .env 파일을 편집 한 후 서버에 다시 시작하여 새 데이터를 입력하도록하십시오.

서버를 다시 시작하지 않으면 .env 파일은이 오류의 원인이 될 수있는 변경 사항을 적용하더라도 이전 메일 데이터를 앱에 계속 제공합니다.


답변

내 .env 파일 구성은 laravel 5.1의 경우와 같습니다

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=example@gmail.com
MAIL_PASSWORD=****************
MAIL_ENCRYPTION=tls

여기서 가장 중요한 것은 Gmail 응용 프로그램 특정 비밀번호 (16 자리)를 생성했다는 것입니다.

구성에 대한 운이 없기 때문에 한 가지 더 밝힐 필요가 있습니다. 즉, .env 파일을 변경할 때마다이 명령을 실행해야합니다.

php artisan config:cache

이 명령이 없으면 laravel이 캐시에서 이전 설정을 실행하기 때문에 가장 중요합니다. 알아내는 데 10 시간 이상이 걸렸습니다.


답변

구성 파일의 사용자 이름과 비밀번호가 잘못 설정되어 인증 오류가 발생했습니다.

이것을 변경하십시오 :

'username' => env('MyUsername@gmail.com'),
'password' => env('MyPassword'),

이에:

'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),

env방법은 .env 파일을 확인합니다. .env 파일에서 이들을 호출 MAIL_USERNAME하므로 env메소드 에 전달해야합니다 .

하나의 문제점 해결 팁 : 실제 생성 된 구성을dd(Config::get('mail')); 볼 수 있도록 추가 하십시오 . 이를 통해 이와 같은 문제를 발견하고 Laravel이 시도하고 사용할 정보를 정확히 파악할 수 있습니다. 따라서 테스트 경로에서 일시적으로 중지하여 가지고있는 것을 검사 할 수 있습니다.

Route::get('test', function()
{
    dd(Config::get('mail'));
});


답변

캐시를 지우면 문제가 해결됩니다.

php artisan config:cache


답변

마침내 나는 얻었다! 공유하기 위해 .env보다 더 많은 구성이 있습니다.

이것은 .env입니다

MAIL_DRIVER=smtp

MAIL_HOST=smtp.gmail.com

MAIL_PORT=587

MAIL_USERNAME=UserName@gmail.com

MAIL_PASSWORD=********

MAIL_ENCRYPTION=tls

config / mail.php도 작동하려면 주소와 이름을 입력해야합니다.

'driver' => env('MAIL_DRIVER', 'smtp'),
'host' => env('MAIL_HOST', 'smtp.gmail.com'),
'port' => env('MAIL_PORT', 587),
'from' => ['address' => 'Username@gmail.com' , 'name' => 'YourName' ],
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,


답변

동일한 문제가 발생하여 온라인으로 모든 것을 시도해도 작동하지 않으면 잘못된 정보를 보내는 구성 캐시 파일 일 수 있습니다. bootstrap / cache / config.php에서 찾을 수 있습니다. 신임 정보가 올바른지 확인하십시오. 알아내는 데 일주일이 걸렸습니다. 이것이 언젠가 누군가를 도울 수 있기를 바랍니다.


답변

개발 목적으로 https://mailtrap.io/ 는 .env 파일에 추가해야하는 모든 설정을 제공합니다. 예 :

Host:   mailtrap.io
Port:   25 or 465 or 2525
Username:   cb1d1475bc6cce
Password:   7a330479c15f99
Auth:   PLAIN, LOGIN and CRAM-MD5
TLS:    Optional

그렇지 않으면 구현을 위해 메일에서 .env 파일에 smtp 자격 증명을 추가 할 수 있습니다 (예 : gmail n all).

또한 서버를 다시 시작하십시오