16장 이메일 보내기

// 코드 16-1 config/mail.php

'from' => ['address' => 'john@example.com', 'name' => 'Admin'],

16.1. 지메일로 메일 보내기

16.1.1. 지메일 드라이버 설정

# 코드 16-2 .env

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_USERNAME={username}@gmail.com
MAIL_PASSWORD={password}

그림 16-1 지메일 '로그인 및 보안 설정' 페이지

16.1.2. 메일 메시지 만들기

// 코드 16-3 app/Http/routes.php

Route::get('mail', function () {
    $article = App\Article::with('user')->find(1);

    return Mail::send(
        'emails.articles.created',
        compact('article'),
        function ($message) use ($article){
            $message->to('yours@domain');
            $message->subject('새 글이 등록되었습니다 -' . $article->title);
        }
    );
});

16.1.3. 뷰 만들기

<!-- // 코드 16-4 resources/views/articles/created.blade.php -->

<h1>
  {{ $article->title }}
  <small>{{ $article->user->name }}</small>
</h1>
<hr/>
<p>
  {{ $article->content }}
  <small>{{ $article->created_at }}</small>
</p>
<hr/>
<footer>
  본 메일은 {{ config('app.url') }} 에서 보냈습니다.
</footer>

16.1.4. 테스트

16.2. 메일건으로 메일 보내기

# 콘솔 16-1 HTTP 클라이언트 컴포넌트 설치

$ composer require "guzzlehttp/guzzle:~5.3|~6.0"
$ composer require "symfony/psr-http-message-bridge:~0.2"

그림 16-2 메일건 가입 확인 메일

16.2.1. 메일건 드라이버 설정

# 코드 16-5 .env

MAIL_DRIVER=mailgun
MAILGUN_DOMAIN={sandbox_RANDOM_NUMBER}.mailgun.org
MAILGUN_SECRET={key-RANDOM_NUMBER}

그림 16-3 메일건 드라이버 설정에 필요한 값 취득

16.2.2. 테스트

# HTTP 16-1 메일건의 응답 

{
  id: "<67f01637f5bcee622e34eeb8f4b829f8@localhost>",
  message: "Queued. Thank you."
}

16.3. 심화 학습

16.3.1. 복잡한 메시지 만들기

// 코드 16-6 app/Http/routes.php

return Mail::send(
    'emails.articles.created',
    compact('article'),
    function ($message) use ($article){
        $message->from('yours1@domain', 'Your Name');
        $message->to(['yours2@domain', 'yours3@domain']);
        $message->subject('새 글이 등록되었습니다 -' . $article->title);
        $message->cc('yours4@domain');
        $message->attach(storage_path('elephant.png'));
    }
);

16.3.2. 텍스트 메일

// 코드 16-7 app/Http/routes.php

return Mail::send(
    ['text' => 'emails.articles.created-text'],
    compact('article'),
    function ($message) use ($article){
        $message->to('yours@domain.com');
        $message->subject('새 글이 등록되었습니다 -' . $article->title);
    }
);
<!-- // 코드 16-8 resources/views/emails/articles/created-text.blade.php -->

{{ $article->user->name }}님이 새 글을 등록했습니다.
---
{{ $article->content }}
{{ $article->created_at }}에 작성됨
---
본 메일은 {{ config('app.url') }} 에서 보냈습니다.

16.3.3. 이메일 본문에 이미지 추가

<!--// 코드 16-9 resources/views/emails/articles/created-text.blade.php -->

<p>
  {{ $article->content }}
  <small>{{ $article->created_at }}</small>
  <br/>
  <br/>
  <div style="text-align: center;">
    <img src="{{ $message->embed(storage_path('elephant.png')) }}" alt="">
  </div>
</p>

그림 16-4 이미지가 추가된 이메일 본문

16.4. 테스트 환경

// 코드 16-10 config/mail.php

return [
    // ...

    'to' => [
        'address' => 'yours@domain',
        'name' => 'Tester',
    ],
];

16.5. 마치며

$ git commit -m '이메일 보내기'
$ git tag 1016-email

results matching ""

    No results matching ""