programing

Larabel 5 이메일 전송 시도 중

bestcode 2022. 9. 18. 12:53
반응형

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 테스트 솔루션을 사용했습니다.순서는 다음과 같습니다.

  1. 사용 중인 OS용 MailHog 최신 버전 다운로드
  2. .env 파일에서 다음 설정을 지정합니다.

MAIL_DRIVER=프로세서

MAIL_HOST=180.0.1

MAIL_PORT=1025

MAIL_USERNAME=테스트 사용자

MAIL_PASSWORD=testpwd

MAIL_Encryption=프로세서

MAIL_FROM_ADDRESS=theaddress@youwant.com

  1. 다운로드한 MailHog 파일을 실행합니다.
  2. 이메일 보내기
  3. 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명령어를 입력합니다.

  1. 넌 메일건으로 가
  2. [ Authorized Recipients ]을 클릭합니다.
  3. 메일을 보낼 이메일 주소를 추가합니다.
  4. 메일로 전송된 메시지를 확인합니다.
  5. 브라보!가도 돼

언급URL : https://stackoverflow.com/questions/29100877/trying-to-get-laravel-5-email-to-work

반응형