Larabel 5 이메일 전송 시도 중
URL을 입력하여 지정된 사용자에게 이메일을 보내려고 하는데 다음 오류가 나타납니다.
Swift_TransportAbstractSmtpTransport.php 행 383의 예외: 응답 코드 250이 필요한데 "530 5.7.1 인증이 필요합니다.
아직까지는 Gmail로 작동시키려 하고 있습니다.어떻게 하면 작동시킬 수 있을까요?
지금까지 제가 가지고 있는 것은 메일입니다.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 파일을 편집한 후 서버를 재시작하는 것을 잊지 마십시오.그러면 입력한 새로운 데이터가 선택됩니다.
다음 명령어로 config 캐시를 클리어합니다.
php artisan config:cache
서버를 재시작하지 않으면 .env 파일은 이전 메일 데이터를 계속 앱에 표시합니다. 이 오류의 원인이 될 수 있는 변경을 가해도 마찬가지입니다.
.env 파일 구성은 larabel 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
이 명령어가 없으면 larabel이 캐시에서 이전 설정을 실행하기 때문에 이 명령어가 가장 중요합니다.알아내는 데 10시간 넘게 걸렸어요.
컨피규레이션파일내의 유저명과 패스워드가 잘못 설정되어 있기 때문에, 인증 에러가 발생합니다.
변경:
'username' => env('MyUsername@gmail.com'),
'password' => env('MyPassword'),
이를 위해:
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
envenv.env. .env를 .env라고 .MAIL_USERNAME아,아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 아, 네.env★★★★★★ 。
힌트 :「 add 」 、 「 」 。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
설정/메일또한 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 credential을 메일에서 얻을 수 있습니다(gmail n all 등).
추가 후 서버를 재시작하십시오.
저도 그래요.
.env서버를 재시작해야 합니다. 현재의 냥냥 the the the the the the the the the 를 멈춰주세요.php artisan serve꼭 가 있을 예요.을 사용법
을 실행해 .php artisan config:cache
여기에 오는 사람들에 대한 향후 참조를 위해 여기에 있는 세 번째 답변에서 주어진 명령어를 실행한 후(현재 Larabel 5.3을 사용하고 있습니다).
php artisan config:cache
다음과 같은 문제가 발생할 수 있습니다.
[ReflectionException]
Class view does not exist
이 경우 app.php 파일 아래의 공급자 목록에 수동으로 추가해야 합니다.이동처:app->config->app.php->'providers[]'덧붙입니다.
Illuminate\View\ViewServiceProvider::class,
그게 도움이 됐으면 좋겠군
도 같은MAIL_ENCRYPTIONtlsmail.php 그게 었어요.null.envfilename을 클릭합니다.
바꿨어요.null로로 합니다.tls리고고 그과효효 !었!!!!
위의 솔루션 중 어느 것도 로컬호스트에서는 동작하지 않았습니다.보안이 낮은 앱으로부터의 액세스를 허용하고, 디스플레이 잠금 해제 캡처를 통한 액세스를 허용하고, SSL의 경우 피어 확인 및 피어 이름 확인을 false로 설정했습니다.
최종적으로 MailHog의 오픈소스 SMTP 테스트 솔루션을 사용했습니다.순서는 다음과 같습니다.
- 사용 중인 OS용 MailHog 최신 버전 다운로드
- .env 파일에서 다음 설정을 지정합니다.
MAIL_DRIVER=프로세서
MAIL_HOST=180.0.1
MAIL_PORT=1025
MAIL_USERNAME=테스트 사용자
MAIL_PASSWORD=testpwd
MAIL_Encryption=프로세서
MAIL_FROM_ADDRESS=theaddress@youwant.com
- 다운로드한 MailHog 파일을 실행합니다.
- 이메일 보내기
- localhost: 8025로 이동하여 보낸 이메일을 확인합니다.
서버를 재부팅하고 다음 명령을 실행해야 합니다.
php artisan cache:clear
php artisan view:clear
php artisan route:clear
php artisan config:clear
php artisan config:cache
그러면 되겠군요.
즉, 서버가 SMTP 서버에 액세스 할 수 없는 것을 의미합니다.
다음을 수행하여 테스트할 수 있습니다.
telnet <smtpServer> <smtpPort>
Access denied 오류가 나타납니다.
해결책은 서버에서 액세스할 수 있는 다른 SMTP 서버를 사용하는 것입니다.
결과가 다음과 같을 경우dd(Config::get('mail'));are null 명령어를 사용합니다.
php artisan config:clear
.env 파일을 변경한 후 서버를 재시작하고 앱을 다시 제공합니다.혹시나 하는 실수 때문에.php 장인의 클리어와 캐시는 정상적으로 동작합니다.
저 같은 경우에는 mymail@gmail.com'에서 사용하던 이메일이 .env 파일에서 MAIL_USERNAME으로 설정한 이메일과 다른 것이 문제였습니다.
다음은 .env의 메일 설정의 일부입니다.
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=anothermail@gmail.com
MAIL_PASSWORD=strongpassword
MAIL_ENCRYPTION=tls
메일 송신 방법에서, 나는 설정했다.
->from('mymail@gmail.com')->to('myfriend@gmail.com');
항상 에서 사용되는 메일이
-> "mymail@filename" 에서)
에서 설정한 것과 동일합니다..env MAIL_USERNAME.
수정 후.env을 보증하다.restart your serverlarabel 7 이하를 사용하는 경우 .env 파일이 변경되었을 때 자동으로 재시작되지 않습니다.
위의 모든 작업을 완료하고 아직 문제를 해결하지 않은 경우 다음 명령을 실행하여 캐시된 설정을 시스템에서 지웁니다.
php artisan cache:clear
php artisan view:clear
php artisan route:clear
php artisan config:clear
나도 너와 같은 문제가 있었어, 이제 막 작동시켰어.
먼저 .env 설정이 올바르게 설정되어 있는지 다시 확인해야 합니다.설정은 다음과 같습니다.
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=yourusername
MAIL_PASSWORD=yourpassword
MAIL_ENCRYPTION=tls
패스워드가 따옴표:) 사이에 있지 않은 것을 확인해 주세요.
설정/메일.php 코멘트 없이 다음과 같은 기능이 있습니다.
<?php
return [
'driver' => 'smtp',
'host' => env('MAIL_HOST', 'smtp.gmail.com'),
'port' => env('MAIL_PORT', '587'),
'from' => ['address' => 'yourusername', 'name' => 'yourname'],
'encryption' => env('MAIL_ENCRYPTION','tls'),
'username' => env('MAIL_USERNAME', 'username@gmail.com'),
'password' => env('MAIL_PASSWORD', 'password'),
'sendmail' => '/usr/sbin/sendmail -bs',
'pretend' => false,
];
효과가 있기를 바랍니다:)
내 경우:서버를 재시작하고 실행합니다.php artisan config:clear명령어를 입력합니다.
- 넌 메일건으로 가
- [ Authorized Recipients ]을 클릭합니다.
- 메일을 보낼 이메일 주소를 추가합니다.
- 메일로 전송된 메시지를 확인합니다.
- 브라보!가도 돼
언급URL : https://stackoverflow.com/questions/29100877/trying-to-get-laravel-5-email-to-work
'programing' 카테고리의 다른 글
| phpmailer: "응답처" 주소만 사용하여 회신합니다. (0) | 2022.09.18 |
|---|---|
| PHP simpleXML 포맷된 방법으로 파일을 저장하는 방법 (0) | 2022.09.18 |
| utf8과 latin1의 차이점 (0) | 2022.09.18 |
| jboss 서버를 시작하는 중 오류 발생 (0) | 2022.09.18 |
| JavaScript Date 객체에 30분을 추가하는 방법 (0) | 2022.09.18 |