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'),
env
env.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_ENCRYPTION
tls
mail.php
그게 었어요.null
.env
filename을 클릭합니다.
바꿨어요.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 server
larabel 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 |