>백엔드 개발 >PHP 튜토리얼 >Laravel 5.3에서 메일 로깅 : 메일 드라이버를 연장합니다

Laravel 5.3에서 메일 로깅 : 메일 드라이버를 연장합니다

William Shakespeare
William Shakespeare원래의
2025-02-10 11:00:16852검색

laravel 5.3 메일 보내기 확장 : 사용자 정의 데이터베이스 메일 로그 Laravel 5.3은 다양한 인기있는 서비스를 통해 이메일을 구성하고 보내는 쉬운 방법을 제공하며 개발을위한 로그 보조 프로그램이 포함되어 있습니다. 그러나 사용 가능한 모든 서비스를 다루는 것은 아니며 기존 메일 드라이버 시스템의 확장이 필요할 수 있습니다.

키 포인트 :

메일 드라이버 시스템을 확장하려면 Artisan Command Line Assistant를 사용하여 새로운 서비스 제공 업체를 만들 수 있습니다. 이 서비스 제공 업체는 응용 프로그램과 상호 작용하고 시작시 서비스를 등록합니다.

새 서비스 제공 업체는 기존 를 확장하여 메소드를 구현할 수 있습니다. 이를 통해 신속한 메일러 인스턴스를 컨테이너에 바인딩하는 새로운 운송 관리자를 생성 할 수 있습니다. 확장 메일 드라이버 시스템을 사용하여 디버깅을 위해 이메일을 데이터베이스 테이블에 로그인 할 수 있습니다. 이는 데이터베이스 테이블이 테이블과 상호 작용할 수있는 새로운 마이그레이션과 새로운 모델을 작성하여 수행됩니다. 그런 다음 파일의 제공자 목록에 제공자를 추가하고 파일의

에 메일 드라이버를 등록하십시오.
  • Laravel은 메일 배송을 포함한 많은 실용적인 기능을 제공합니다. 다양한 인기있는 서비스를 통해 쉽게 구성하고 이메일을 보낼 수 있으며 개발을위한 로그 보조 프로그램도 포함됩니다.
  • 이것은 IlluminateMailMailServiceProvider 뷰를 사용하여 웹 사이트의 새로 등록 된 사용자에게 이메일을 보냅니다. Laravel 5.3에서 우편으로 사용하면 더 쉬워집니다 (그러나 이전 구문은 여전히 ​​유효합니다). register
  • 다음은 예입니다 : config/app.php config/mail.php db Laravel은 또한 개발 단계에서 로그 드라이버를 사용하여 메일을 보내기위한 좋은 출발점과 생산 단계에서 SMTP, SparkPost, Mailgun 등을 제공합니다. 이것은 대부분의 경우 좋은 것처럼 보이지만 사용 가능한 모든 서비스를 다루는 것은 아닙니다! 이 자습서에서는 기존 메일 드라이버 시스템을 확장하여 자체 드라이버를 추가하는 방법을 배웁니다.
  • 예제를 간단하고 명확하게하기 위해 메일 로그를 데이터베이스 테이블에 로그인합니다.
서비스 제공 업체를 만듭니다

이를 달성하는 선호하는 방법은 응용 프로그램과 상호 작용하고 시작시 서비스를 등록 할 수있는 서비스 제공 업체를 작성하는 것입니다. 먼저 Artisan Command Line Assistant를 사용하여 새로운 서비스 제공 업체를 생성합시다.

이것은

폴더에서 새로운 클래스를 생성합니다. Laravel Service 제공 업체에 익숙하다면 클래스를 확장하고 <code class="language-php">Mail::send('emails.welcome', ['user' => $user], function ($m) use ($user) { $m->to($user->email, $user->name)->subject('Welcome to the website'); });</code> 및 메소드를 정의했음을 알 수 있습니다. 문서에서 제공자에 대한 자세한 내용을 읽을 수 있습니다.

메일 제공 업체 사용 app/Providers 부모 서비스 제공 업체 클래스를 사용하는 대신 바로 가기를하고 기존 ServiceProvider를 확장 할 수 있습니다. 이는 메소드가 구현되었음을 의미합니다. boot register

메소드는

구성 값에 따라 해당 전송 드라이버를 반환합니다. 여기서 할 수있는 일은

상위 메소드를 호출하기 전에 수표를 수행하고 전송 관리자 를 반환하는 것입니다. IlluminateMailMailServiceProvider register 전송 관리자 사용 인스턴스를 구문 분석하고 Swift_mailer의 Swiftmailer 인스턴스를 반환해야합니다. 신속한 메일러 인스턴스를 컨테이너에 바인딩해야합니다.

<code class="language-bash"># 生成一个新的可邮件类
php artisan make:mail WelcomeMail</code>

전송 객체를 실제 드라이버로 취급 할 수 있습니다. 네임 스페이스를 확인하면 각 드라이버마다 다른 전송 클래스가 있습니다 (예 : , 등). registerSwiftMailer mail.driver 클래스에는 registerSwiftMailer 인스턴스가 필요하며, 클래스를 확장하여 만족할 수 있습니다. 이렇게 보일 것입니다.

우리가 여기서 구현 해야하는 유일한 방법은
<code class="language-php">// app/Mail/WelcomeMail.php

class WelcomeUser extends Mailable
{
    use Queueable, SerializesModels;

    public $user;

    public function __construct(User $user)
    {
        $this->user = $user;
    }

    public function build()
    {
        return $this->view('emails.welcome');
    }
}</code>
메소드입니다. 메일 전송 논리를 담당하며,이 경우 이메일을 데이터베이스에 로그인해야합니다. 우리의 생성자는 외부 종속성이 필요하지 않기 때문에 지금은 비워 둘 수 있습니다.

메소드는 항상 수신자 이메일과 이름의 연관 배열을 반환합니다. 우리는 swift.mailer 함수를 사용하여 이메일 목록을 얻은 다음 통합하여 문자열을 얻습니다.

데이터베이스로 이메일을 기록하십시오 다음 단계는 데이터베이스 테이블에 필요한 마이그레이션을 만드는 것입니다.
<code class="language-php">// routes/web.php

Route::get('/', function () {
    $user = User::find(2);

    \Mail::to($user->email)->send(new WelcomeUser($user));

    return "done";
});</code>

IlluminateMailTransport 우리의 마이그레이션에는 이메일 본문, 주제 및 수신자 이메일 만 포함되지만 필요에 따라 자세한 내용을 추가 할 수 있습니다. 사용 가능한 필드 목록을 보려면 클래스 정의를 확인하십시오. LogTransport 이제 테이블과 상호 작용하고 필요한 필드를 SparkPostTransport 배열에 추가하려면 새 모델을 만들어야합니다.

<code class="language-php">Mail::send('emails.welcome', ['user' => $user], function ($m) use ($user) {
    $m->to($user->email, $user->name)->subject('Welcome to the website');
});</code>
<code class="language-bash"># 生成一个新的可邮件类
php artisan make:mail WelcomeMail</code>
이메일 보내기 좋아요, 이제 지금까지 달성 한 것을 테스트 할 때입니다. 먼저 제공자를 파일의 공급자 목록에 추가합니다.

config/app.php 그런 다음 파일에 메일 드라이버를

에 등록합니다.
<code class="language-php">// app/Mail/WelcomeMail.php

class WelcomeUser extends Mailable
{
    use Queueable, SerializesModels;

    public $user;

    public function __construct(User $user)
    {
        $this->user = $user;
    }

    public function build()
    {
        return $this->view('emails.welcome');
    }
}</code>

나머지 부분은 테스트 이메일을 보내고 데이터베이스에 로그인한지 확인하는 것입니다. 홈페이지 URL에 액세스하면 이메일을 보내 드리겠습니다. 다음은 코드입니다. config/mail.php db 홈페이지 경로에 액세스 한 후 명령을 실행하여 테이블 레코드를 확인할 수 있습니다.

<code class="language-php">// routes/web.php

Route::get('/', function () {
    $user = User::find(2);

    \Mail::to($user->email)->send(new WelcomeUser($user));

    return "done";
});</code>

결론 이 기사에서는 메일 드라이버 시스템을 확장하여 디버깅을위한 이메일을 가로 채는 방법을 볼 수 있습니다. Laravel에서 내가 감사하는 한 가지는 비교할 수없는 확장 성입니다. 라우터와 IOC에서 우편으로 모든 것을 변경하거나 확장 할 수 있습니다.
<code class="language-bash">php artisan make:provider DBMailProvider</code>
질문이나 의견이 있으시면 아래에 게시하시면 최선을 다해 답변 해 드리겠습니다.

Laravel 5.3 (FAQ)에서 메일 로깅에 대한 FAQ Laravel 5.3에서 메일 드라이버를 연장하는 방법은 무엇입니까? php artisan tinker Laravel 5.3에서 메일 드라이버를 확장하려면 새로운 서비스 제공 업체를 작성해야합니다. 이 서비스 제공 업체는 기존 메일 드라이버를 확장하고 추가 기능을 추가 할 수 있습니다. 명령을 사용하여 새 서비스 제공 업체를 만들 수 있습니다. 제공자를 만든 후 파일에 등록 할 수 있습니다. 제공자에서는 emails 메소드를 사용하여 메일 드라이버에 사용자 정의 기능을 추가 할 수 있습니다.

Laravel에서 메일 로깅의 목적은 무엇입니까?

Laravel의 메일 로깅은 응용 프로그램에서 보낸 모든 발신 이메일을 추적 할 수있는 기능입니다. 이것은 언제, 누구에게 전송되는지 정확하게 볼 수 있기 때문에 디버깅에 매우 유용합니다. 또한 응용 프로그램에서 보낸 모든 이메일 커뮤니케이션의 레코드를 제공하기 때문에 감사에 매우 유용합니다. Mail Logging in Laravel 5.3: Extending the Mail Driver 모든 발신 이메일을 기록하도록 Laravel을 구성하는 방법은 무엇입니까?

모든 발신 이메일을 기록하도록 Laravel을 구성하려면 파일을 수정해야합니다. 이 파일에서는

옵션을

로 설정할 수 있습니다. 이것은 Laravel에게 모든 발신 이메일을 기록하도록 지시합니다. 로그는

디렉토리에 저장됩니다.

Laravel에서 이메일 로그를 보는 방법은 무엇입니까?

Laravel의 메일 로그는

디렉토리에 저장됩니다. 이 디렉토리를 탐색하고 로그 파일을 열어 이러한 로그를 볼 수 있습니다. 로그 파일은 날짜에 따라 명명되므로 특정 날짜에 대한 로그를 쉽게 찾을 수 있습니다.

Laravel에서 이메일 로그 형식을 사용자 정의 할 수 있습니까?

예, Laravel에서 메일 로그 형식을 사용자 정의 할 수 있습니다. 메일 드라이버를 확장하고

메소드를 재정의하여 수행 할 수 있습니다. 이 방법에서는 로그 메시지의 형식을 지정할 수 있습니다.

(FAQ의 나머지 부분은 전자 메일 자체와 관련이 있으며이 예에서는 이메일 로그 확장과 관련이 없으므로 생략됩니다. 이미지 경로 및 log

는 실제 액세스 가능한 이미지 링크로 대체해야합니다.

위 내용은 Laravel 5.3에서 메일 로깅 : 메일 드라이버를 연장합니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:PHP의 맛있는 악다음 기사:PHP의 맛있는 악