Skip to content

Latest commit

 

History

History
99 lines (63 loc) · 4.42 KB

mail.md

File metadata and controls

99 lines (63 loc) · 4.42 KB

메일

설정

Laravel은 유명한 SwiftMailer 라이브러리를 바탕으로 깨끗하고 간단한 API를 제공 합니다. 메일 설정 파일은 app/config/mail.php 이며, SMTP 호스트, 포트, 자격증명 뿐만 아니라 라이브러리에 의해 전송되는 모든 메시지에 사용되는 글로벌 from 주소를 변경할 수 있도록 해주는 옵션들을 포함하고 있습니다. 당신이 원하는 어떤 SMTP 서버를 사용해도 좋습니다. PHP mail 함수를 사용하여 메일을 보내려면, 설정 파일의 drivermail로 변경하시기 바랍니다.

기본적인 사용법

Mail::send 메소드를 사용하여 이메일을 메시지를 보낼수 있습니다.:

Mail::send('emails.welcome', $data, function($m)
{
	$m->to('[email protected]', 'John Smith')->subject('Welcome!');
});

send 메소드에 전달되는 첫번째 인수는 이메일의 바디로 사용될 뷰 파일의 이름입니다. 두번째 인수는 뷰에 전달 될 $data 이며, 세번째는 이메일 메시지에 다양한 옵션을 지정하게 해주는 클로저입니다.

노트: $message 변수는 항상 이베일 뷰에 전달되며, 인라인 첨부를 사용할 수 있게 해줍니다. 그러므로 뷰 페이로드에 message 이름의 변수 전달은 피하는게 좋습니다.

또한 HTML 뷰를 추가로 사용할 수 있는 플레인 텍스트 뷰를 지정할 수도 있습니다.:

Mail::send(array('html.view', 'text.view'), $data, $callback);

또는 htmltext 키를 사용하여 한개의 뷰 타입만 지정할 수도 있습니다:

Mail::send(array('text' => 'view'), $data, $callback);

참조나 첨부파일 같은 다른 옵션 또한 이메일 메시지에 지정할 수 있습니다.:

Mail::send('emails.welcome', $data, function($m)
{
	$m->from('[email protected]', 'Laravel');

	$m->to('[email protected]')->cc('[email protected]');

	$m->attach($pathToFile);
});

메시지에 파일을 첨부할 때는 파일의 MIME 타입이나 표시명을 지정할 수 있습니다.:

$m->attach($pathToFile, array('as' => $display, 'mime' => $mime));

노트: Mail::send 클로저에 전달되는 메시지 인스턴스는 SwiftMailer의 메시지 클래스를 확장하므로 클래스의 모든 메소드를 호출하여 메시지를 작성할 수 있도록 해줍니다.

인라인 첨부 사용

이메일에 이미지를 포함하는 것은 성가신 일입니다. 하지만 Laravel은 이메일에 이미지를 첨부하고 적절한 CID를 조회할 수 있는 편리한 방법을 제공합니다.

이메일 뷰에 이미지 첨부

<body>
	Here is an image:

	<img src="<?php echo $message->embed($pathToFile); ?>">
</body>

이메일 뷰에 미가공 데이터 첨부

<body>
	Here is an image from raw data:

	<img src="<?php echo $message->embedData($data, $name); ?>">
</body>

$message 변수는 Mail 클래스에 의해 항상 이베일 뷰에 전달 된다는 것을 주의 하십시오.

메일 대기(큐)

e-mail 메시지를 보내는 일은 어플리케이션의 응답 속도를 대폭 길게 만드므로, 많은 개발자들이 e-mail을 백그라운드에서 보낼 수 있도록 대기 시키는 방법을 선택합니다. Laravel은 내장된 통합 큐 API를 사용해 이를 쉽게 할 수 있도록 해줍니다. 간단하게 Mail 클래스의 queue 메소드를 사용하여 메일을 대기 시킬 수 있습니다.:

메일 대기시키기

Mail::queue('emails.welcome', $data, function($m)
{
	$m->to('[email protected]', 'John Smith')->subject('Welcome!');
});

또한 later 메소드를 사용하여 메일을 몇 초 뒤에 보낼 지 명시 할수도 있습니다.:

Mail::later(5, 'emails.welcome', $data, function($m)
{
	$m->to('[email protected]', 'John Smith')->subject('Welcome!');
});

어떤 큐나, "튜브"에 메일 메시지를 푸쉬 할 것인지 지정하려면, queueOnlaterOn 메소드를 사용하여 그렇게 할 수 있습니다.:

Mail::queueOn('queue-name', 'emails.welcome', $data, function($m)
{
	$m->to('[email protected]', 'John Smith')->subject('Welcome!');
});