email

์•Œ๋ฆผ๊ธฐ๋Šฅ ์ค‘ ๊ฐ€์žฅ ์ „ํ†ต์ ์ธ ๋ฐฉ๋ฒ•์ธ ๋ฉ”์ผ์€ smtp,mail,mailgun,log๋“ฑ ์—ฌ๋Ÿฌ ๋“œ๋ผ์ด๋ฒ„ ์ค‘์—์„œ ์„ ํƒํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

config/mail.php์—์„œ from ๋ถ€๋ถ„์˜ value๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ ๋ณด๋‚ด๋Š” ์‚ฌ๋žŒ์— ๊ด€ํ•œ ์ „์—ญ์„ค์ •์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

gmail

gmail์€ smtpํ”„๋กœํ† ์ฝœ์„ ์ด์šฉํ•˜๊ณ  ์ง€๋ฉ”์ผ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์„ค์ •ํ•ด์ฃผ์–ด์•ผ ํ•˜๋Š”๋ฐ .envํŒŒ์ผ์„ ์—ด์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME={username}@gmail.com
MAIL_PASSWORD={password}
MAIL_ENCRYPTION=tls

๊ทธ๋ฆฌ๊ณ  ์ง€๋ฉ”์ผ์— ๋กœ๊ทธ์ธํ•˜์—ฌ ๋‚ด๊ณ„์ •=>๋กœ๊ทธ์ธ ๋ฐ ๋ณด์•ˆํŽ˜์ด์ง€=>๋ณด์•ˆ์ˆ˜์ค€ ๋‚ฎ์€์•ฑ ํ—ˆ์šฉ์„ ์‚ฌ์šฉํ•จ์œผ๋กœ ๋ฐ”๊พธ์–ด ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

๋ฉ”์ผ ๋ณด๋‚ด๋Š” ๋กœ์ง ์˜ˆ์‹œ

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('dest@domain');
            $message->subject('์ƒˆ ๊ธ€์ด ๋“ฑ๋ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค.' . $article->title);
        }
    );
});

Mail ํŒŒ์‚ฌ๋“œ์˜ send()๋ฉ”์„œ๋“œ๋กœ ๋ฉ”์ผ์„ ๋ณด๋‚ด๋ฉฐ ์ด ๋ฉ”์„œ๋“œ์˜ ์ฒซ๋ฒˆ์งธ ์ธ์ž๋Š” ๋ฉ”์ผ ๋ณธ๋ฌธ์— ์‚ฌ์šฉํ•  ๋ทฐ์ด๋‹ค. ๋‘๋ฒˆ์งธ ์ธ์ž๋Š” ๋ทฐ์— ์ „๋‹ฌํ•  ๋ฐ์ดํ„ฐ์ด๊ณ  ์„ธ๋ฒˆ์งธ ์ธ์ž๋Š” ๋ฉ”์ผ ๋‚ด์šฉ์„ ๊ตฌ์„ฑํ•˜๋Š” ํด๋กœ์ €์ด๋‹ค. ํด๋กœ์ €์—์„œ $message๋ฅผ ์ธ์ž๋กœ ๋ฐ›์•„ subject()๋Š” ๋ฉ”์ผ ์ œ๋ชฉ์„, to()๋ฉ”์„œ๋“œ๋กœ ์ˆ˜์‹ ์ž๋ฅผ ์ •์˜ ํ•œ๋‹ค

use() ํ‚ค์›Œ๋“œ๋Š” ํด๋กœ์ € ๋ฐ–์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํด๋กœ์ € ์ปจํ…์ŠคํŠธ์— ๋ฐ”์ธ๋”ฉํ•˜๋Š” ๋ฌธ๋ฒ•์œผ๋กœ ์ด ํ‚ค์›Œ๋“œ๊ฐ€ ์—†์œผ๋ฉด $article ๋ณ€์ˆ˜๋ฅผ ํด๋กœ์ € ์•ˆ์—์„œ ์“ธ ์ˆ˜ ์—†๋‹ค.

๋ฉ”์ผ๊ฑด

smtp๋Š” ๋น„๊ต์  ๋А๋ฆฐ ํ”„๋กœํ† ์ฝœ๋กœ ๋ฉ”์ผ ๋ฐœ์†ก์„ ํ• ๋•Œ ๋А๋ฆด ์ˆ˜๊ฐ€ ์žˆ๋Š”๋ฐ ๋ฉ”์ผ๊ฑด์„ ์ด์šฉํ•˜๋ฉด http๋กœ ๋ฉ”์ผ ๋ฐœ์†ก์„ ์š”์ฒญํ•˜๊ณ  ๊ทธ ์ดํ›„์— smtp๋กœ ๋ณด๋‚ด์ฃผ๋Š” ๋ฐฉ์‹์ด๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž์˜ ํ™”๋ฉด ์‘๋‹ต์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ์šฐ๋ฆฌ ์„œ๋ฒ„๊ฐ€ ๋ฉ”์ผ๊ฑด ์„œ๋ฒ„์™€ http๋กœ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. compser require "guzzlehttp/guzzle:~5.3|6.0"์œผ๋กœ http ํด๋ผ์ด์–ธํŠธ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์„ค์น˜ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

๋ฉ”์ผ๊ฑด์„ ํšŒ์›๊ฐ€์ž…ํ•˜๊ณ  .envํŒŒ์ผ์„ ์•„๋ž˜์™€ ๊ฐ™์ด ์ˆ˜์ •ํ•˜์ž. random number๋Š” ๋ฉ”์ผ๊ฑด์— ๋กœ๊ทธ์ธํ•˜๋ฉด ๋Œ€์‹œ๋ณด๋“œ์— ํ‘œ์‹œ๋˜์–ด์žˆ๋‹ค.

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

์ถ”๊ฐ€ ๋ฉ”์„œ๋“œ

  • $message->to(array $address) : ๋ฐ›๋Š” ์‚ฌ๋žŒ์ด ์—ฌ๋Ÿฌ๋ช…์ผ๋•Œ๋Š” ๋ฐฐ์—ด์„ ์ด์šฉ

  • $message->from(string $addr, string $name = null) : ์ „์—ญ์œผ๋กœ ์„ค์ •ํ•œ ๋ณด๋‚ด๋Š” ์‚ฌ๋žŒ์˜ ์ด๋ฉ”์ผ ์ฃผ์†Œ์™€ ์ด๋ฆ„์„ ์˜ค๋ฒ„๋ผ์ด๋“œ ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • $message->cc(string $addr, string $name=null) : ์ฐธ์กฐ. ์—ฌ๋Ÿฌ๋ช…์ผ ๋•Œ๋Š” ์ฒด์ธ ์ด์šฉ

  • $message->bcc(string $addr, string $name=null) : ์ˆจ์€ ์ฐธ์กฐ. ์—ฌ๋Ÿฌ๋ช…์ผ ๋•Œ๋Š” ์ฒด์ธ ์ด์šฉ

  • $massage->attach(string $file, array $options = []) : ํŒŒ์ผ ์ฒจ๋ถ€. ['as' => 'ํŒŒ์ผ ๋ณ„์นญ', 'mime' => 'application/zip']๊ณผ ๊ฐ™์ด ๋‘๋ฒˆ์งธ ์ธ์ž์— ์˜ต์…˜์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค.

    • $message->attach(storage_path('elephant.png')) : storage_path()๋ฉ”์„œ๋“œ๋Š” storage ๋””๋ ‰ํ† ๋ฆฌ ์•„๋ž˜์— ์žˆ๋Š” ํŒŒ์ผ์˜ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋„์šฐ๋ฏธ ํ•จ์ˆ˜์ด๋‹ค.

    • {{ $message->embed(storage_path('elephant.png')) }} : view์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๋ณธ๋ฌธ์— ์ถ”๊ฐ€ํ•  ๋•Œ๋Š” embed(string $file)๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค.

Last updated