Email 클래스¶
CodeIgniter의 강력한 Email 클래스는 다음 기능을 지원합니다:
다중 프로토콜: Mail, Sendmail, SMTP
SMTP용 TLS 및 SSL 암호화
다중 수신자
CC 및 BCC
HTML 또는 일반 텍스트 이메일
첨부 파일
줄 바꿈
우선순위
BCC 배치 모드: 대규모 이메일 목록을 소규모 BCC 배치로 분할
이메일 디버깅 도구
이메일 라이브러리 사용¶
이메일 전송¶
이메일 전송은 간단할 뿐만 아니라 즉석에서 설정하거나 설정 파일에서 기본 설정을 지정할 수 있습니다.
다음은 이메일 전송 방법을 보여주는 기본 예시입니다. 참고: 이 예시는 컨트롤러 중 하나에서 이메일을 전송한다고 가정합니다.
$this->load->library('email');
$this->email->from('your@example.com', 'Your Name');
$this->email->to('someone@example.com');
$this->email->cc('another@another-example.com');
$this->email->bcc('them@their-example.com');
$this->email->subject('Email Test');
$this->email->message('Testing the email class.');
$this->email->send();
이메일 기본 설정¶
이메일 메시지 전송 방식을 조정하는 데 사용할 수 있는 21가지 기본 설정이 있습니다. 여기에 설명된 대로 수동으로 설정하거나, 아래에 설명된 대로 설정 파일에 저장된 기본 설정을 통해 자동으로 설정할 수 있습니다:
기본 설정은 이메일 초기화 메소드에 기본 설정 값 배열을 전달하여 설정합니다. 다음은 몇 가지 기본 설정을 지정하는 예시입니다:
$config['protocol'] = 'sendmail';
$config['mailpath'] = '/usr/sbin/sendmail';
$config['charset'] = 'iso-8859-1';
$config['wordwrap'] = TRUE;
$this->email->initialize($config);
참고
대부분의 기본 설정에는 설정하지 않을 경우 사용되는 기본값이 있습니다.
설정 파일에서 이메일 기본 설정¶
위 방법 대신 기본 설정을 설정 파일에 넣는 것을 선호하는 경우, email.php라는 새
파일을 만들고 해당 파일에 $config 배열을 추가하세요. 그런 다음 config/email.php에
파일을 저장하면 자동으로 사용됩니다. 기본 설정을 설정 파일에 저장하면
$this->email->initialize() 메소드를 사용할 필요가 없습니다.
이메일 기본 설정 목록¶
다음은 이메일 전송 시 설정할 수 있는 모든 기본 설정 목록입니다.
기본 설정 |
기본값 |
옵션 |
설명 |
|---|---|---|---|
useragent |
CodeIgniter |
없음 |
“사용자 에이전트”. |
protocol |
mail, sendmail, smtp |
메일 전송 프로토콜. |
|
mailpath |
/usr/sbin/sendmail |
없음 |
Sendmail에 대한 서버 경로. |
smtp_host |
기본값 없음 |
없음 |
SMTP 서버 주소. |
smtp_user |
기본값 없음 |
없음 |
SMTP 사용자 이름. |
smtp_pass |
기본값 없음 |
없음 |
SMTP 비밀번호. |
smtp_port |
25 |
없음 |
SMTP 포트. |
smtp_timeout |
5 |
없음 |
SMTP 타임아웃 (초). |
smtp_keepalive |
FALSE |
TRUE 또는 FALSE (boolean) |
지속적인 SMTP 연결 활성화. |
smtp_crypto |
기본값 없음 |
tls 또는 ssl |
SMTP 암호화. |
wordwrap |
TRUE |
TRUE 또는 FALSE (boolean) |
줄 바꿈 활성화. |
wrapchars |
76 |
줄 바꿈 문자 수. |
|
mailtype |
text |
text 또는 html |
메일 유형. HTML 이메일을 전송하는 경우 완전한 웹 페이지로 전송해야 합니다. 상대 링크나 상대 이미지 경로가 없는지 확인하세요. |
charset |
|
문자 세트 (utf-8, iso-8859-1 등). |
|
validate |
TRUE |
TRUE 또는 FALSE (boolean) |
이메일 주소의 유효성 검사 여부. |
priority |
3 |
1, 2, 3, 4, 5 |
이메일 우선순위. 1 = 최고, 5 = 최저, 3 = 보통. |
crlf |
\n |
“\r\n” 또는 “\n” 또는 “\r” |
개행 문자 (RFC 822 준수를 위해 “\r\n” 사용). |
newline |
\n |
“\r\n” 또는 “\n” 또는 “\r” |
개행 문자 (RFC 822 준수를 위해 “\r\n” 사용). |
bcc_batch_mode |
FALSE |
TRUE 또는 FALSE (boolean) |
BCC 배치 모드 활성화. |
bcc_batch_size |
200 |
없음 |
각 BCC 배치의 이메일 수. |
dsn |
FALSE |
TRUE 또는 FALSE (boolean) |
서버에서 알림 메시지 활성화. |
줄 바꿈 재정의¶
줄 바꿈이 활성화된 경우(RFC 822 준수를 위해 권장) 이메일에 매우 긴 링크가 있으면 줄 바꿈이 적용되어 수신자가 클릭할 수 없게 될 수 있습니다. CodeIgniter를 사용하면 메시지의 일부에서 줄 바꿈을 수동으로 재정의할 수 있습니다:
일반적으로 줄 바꿈되는
이메일 텍스트.
{unwrap}http://example.com/a_long_link_that_should_not_be_wrapped.html{/unwrap}
일반적으로 줄 바꿈되는
추가 텍스트.
줄 바꿈하지 않을 항목을 {unwrap} {/unwrap} 사이에 배치하세요.
클래스 레퍼런스¶
- class CI_Email¶
- from($from[, $name = ''[, $return_path = NULL]])¶
- 매개변수:
$from (
string) – “발신자” 이메일 주소$name (
string) – “발신자” 표시 이름$return_path (
string) – 배달되지 않은 이메일을 리디렉션할 선택적 이메일 주소
- 반환:
CI_Email 인스턴스 (메소드 체이닝)
- 반환 형식:
이메일을 보내는 사람의 이메일 주소와 이름을 설정합니다:
$this->email->from('you@example.com', 'Your Name');
배달되지 않은 메일을 리디렉션하기 위한 Return-Path도 설정할 수 있습니다:
$this->email->from('you@example.com', 'Your Name', 'returned_emails@example.com');
참고
프로토콜로 ‘smtp’를 설정한 경우 Return-Path를 사용할 수 없습니다.
- reply_to($replyto[, $name = ''])¶
- 매개변수:
$replyto (
string) – 회신용 이메일 주소$name (
string) – 회신 이메일 주소의 표시 이름
- 반환:
CI_Email 인스턴스 (메소드 체이닝)
- 반환 형식:
회신 주소를 설정합니다. 정보가 제공되지 않으면 :meth:from 메소드의 정보가 사용됩니다. 예시:
$this->email->reply_to('you@example.com', 'Your Name');
- to($to)¶
- 매개변수:
$to (
mixed) – 쉼표로 구분된 문자열 또는 이메일 주소 배열
- 반환:
CI_Email 인스턴스 (메소드 체이닝)
- 반환 형식:
수신자의 이메일 주소를 설정합니다. 단일 이메일, 쉼표로 구분된 목록 또는 배열이 될 수 있습니다:
$this->email->to('someone@example.com');
$this->email->to('one@example.com, two@example.com, three@example.com');
$this->email->to( array('one@example.com', 'two@example.com', 'three@example.com') );
- cc($cc)¶
- 매개변수:
$cc (
mixed) – 쉼표로 구분된 문자열 또는 이메일 주소 배열
- 반환:
CI_Email 인스턴스 (메소드 체이닝)
- 반환 형식:
CC 이메일 주소를 설정합니다. “to”와 마찬가지로 단일 이메일, 쉼표로 구분된 목록 또는 배열이 될 수 있습니다.
- bcc($bcc[, $limit = ''])¶
- 매개변수:
$bcc (
mixed) – 쉼표로 구분된 문자열 또는 이메일 주소 배열$limit (
int) – 배치당 보낼 최대 이메일 수
- 반환:
CI_Email 인스턴스 (메소드 체이닝)
- 반환 형식:
BCC 이메일 주소를 설정합니다.
to()메소드와 마찬가지로 단일 이메일, 쉼표로 구분된 목록 또는 배열이 될 수 있습니다.$limit가 설정되면 “배치 모드”가 활성화되어 각 배치가 지정된$limit를 초과하지 않도록 배치로 이메일을 전송합니다.
- subject($subject)¶
- 매개변수:
$subject (
string) – 이메일 제목 줄
- 반환:
CI_Email 인스턴스 (메소드 체이닝)
- 반환 형식:
이메일 제목을 설정합니다:
$this->email->subject('This is my subject');
- message($body)¶
- 매개변수:
$body (
string) – 이메일 메시지 본문
- 반환:
CI_Email 인스턴스 (메소드 체이닝)
- 반환 형식:
이메일 메시지 본문을 설정합니다:
$this->email->message('This is my message');
- set_alt_message($str)¶
- 매개변수:
$str (
string) – 대체 이메일 메시지 본문
- 반환:
CI_Email 인스턴스 (메소드 체이닝)
- 반환 형식:
대체 이메일 메시지 본문을 설정합니다:
$this->email->set_alt_message('This is the alternative message');
이것은 HTML 형식의 이메일을 전송할 때 사용할 수 있는 선택적 메시지 문자열입니다. HTML 이메일을 수락하지 않는 사람들을 위해 HTML 형식 없이 헤더 문자열에 추가되는 대체 메시지를 지정할 수 있습니다. 자체 메시지를 설정하지 않으면 CodeIgniter가 HTML 이메일에서 메시지를 추출하고 태그를 제거합니다.
- set_header($header, $value)¶
- 매개변수:
$header (
string) – 헤더 이름$value (
string) – 헤더 값
- 반환:
CI_Email 인스턴스 (메소드 체이닝)
- 반환 형식:
이메일에 추가 헤더를 추가합니다:
$this->email->set_header('Header1', 'Value1'); $this->email->set_header('Header2', 'Value2');
- clear([$clear_attachments = FALSE])¶
- 매개변수:
$clear_attachments (
bool) – 첨부 파일을 지울지 여부
- 반환:
CI_Email 인스턴스 (메소드 체이닝)
- 반환 형식:
모든 이메일 변수를 빈 상태로 초기화합니다. 이 메소드는 루프에서 이메일 전송 메소드를 실행할 때 사용하기 위한 것으로, 각 사이클 사이에 데이터를 재설정할 수 있습니다.
foreach ($list as $name => $address) { $this->email->clear(); $this->email->to($address); $this->email->from('your@example.com'); $this->email->subject('Here is your info '.$name); $this->email->message('Hi '.$name.' Here is the info you requested.'); $this->email->send(); }
매개변수를 TRUE로 설정하면 첨부 파일도 지워집니다:
$this->email->clear(TRUE);
- send([$auto_clear = TRUE])¶
- 매개변수:
$auto_clear (
bool) – 메시지 데이터를 자동으로 지울지 여부
- 반환:
성공 시 TRUE, 실패 시 FALSE
- 반환 형식:
bool
이메일 전송 메소드입니다. 성공 또는 실패에 따라 불리언 TRUE 또는 FALSE를 반환하므로 조건부로 사용할 수 있습니다:
if ( ! $this->email->send()) { // 오류 생성 }
이 메소드는 요청이 성공하면 모든 매개변수를 자동으로 지웁니다. 이 동작을 중지하려면 FALSE를 전달하세요:
if ($this->email->send(FALSE)) { // 매개변수가 지워지지 않습니다 }
참고
print_debugger()메소드를 사용하려면 이메일 매개변수 지우기를 피해야 합니다.참고
batch_bcc_mode가 활성화되고 수신자가batch_bcc_size보다 많으면 이 메소드는 항상 불리언TRUE를 반환합니다.
- attach($filename[, $disposition = ''[, $newname = NULL[, $mime = '']]])¶
- 매개변수:
$filename (
string) – 파일 이름$disposition (
string) – 첨부 파일의 ‘disposition’. 대부분의 이메일 클라이언트는 여기서 사용된 MIME 사양에 관계없이 자체적으로 결정합니다. https://www.iana.org/assignments/cont-disp/cont-disp.xhtml$newname (
string) – 이메일에 사용할 커스텀 파일 이름$mime (
string) – 사용할 MIME 유형 (버퍼된 데이터에 유용)
- 반환:
CI_Email 인스턴스 (메소드 체이닝)
- 반환 형식:
첨부 파일을 전송할 수 있습니다. 첫 번째 매개변수에 파일 경로/이름을 입력하세요. 여러 첨부 파일의 경우 메소드를 여러 번 사용하세요. 예시:
$this->email->attach('/path/to/photo1.jpg'); $this->email->attach('/path/to/photo2.jpg'); $this->email->attach('/path/to/photo3.jpg');
기본 disposition(attachment)을 사용하려면 두 번째 매개변수를 비워두고, 그렇지 않으면 커스텀 disposition을 사용하세요:
$this->email->attach('image.jpg', 'inline');
URL을 사용할 수도 있습니다:
$this->email->attach('http://example.com/filename.pdf');
커스텀 파일 이름을 사용하려면 세 번째 매개변수를 사용하세요:
$this->email->attach('filename.pdf', 'attachment', 'report.pdf');
실제 파일 대신 버퍼 문자열을 사용해야 하는 경우 첫 번째 매개변수를 버퍼로, 세 번째 매개변수를 파일 이름으로, 네 번째 매개변수를 mime-type으로 사용할 수 있습니다:
$this->email->attach($buffer, 'attachment', 'report.pdf', 'application/pdf');
- attachment_cid($filename)¶
- 매개변수:
$filename (
string) – 기존 첨부 파일 이름
- 반환:
첨부 파일 Content-ID 또는 찾을 수 없으면 FALSE
- 반환 형식:
string
첨부 파일의 Content-ID를 설정하고 반환하여 인라인(이미지) 첨부 파일을 HTML에 임베드할 수 있습니다. 첫 번째 매개변수는 이미 첨부된 파일 이름이어야 합니다.
$filename = '/img/photo1.jpg'; $this->email->attach($filename); foreach ($list as $address) { $this->email->to($address); $cid = $this->email->attachment_cid($filename); $this->email->message('<img src="cid:'. $cid .'" alt="photo1" />'); $this->email->send(); }
참고
각 이메일의 Content-ID는 고유해야 하므로 재생성해야 합니다.
- print_debugger([$include = array('headers', 'subject', 'body')])¶
- 매개변수:
$include (
array) – 출력할 메시지 부분
- 반환:
형식화된 디버그 데이터
- 반환 형식:
string
서버 메시지, 이메일 헤더, 이메일 메시지를 포함하는 문자열을 반환합니다. 디버깅에 유용합니다.
선택적으로 메시지의 어느 부분을 출력할지 지정할 수 있습니다. 유효한 옵션: headers, subject, body.
예시:
// 이메일 데이터가 지워지지 않도록 전송 시 FALSE를 전달해야 합니다. // 그렇지 않으면 print_debugger()가 출력할 내용이 없게 됩니다. $this->email->send(FALSE); // 메시지 제목과 본문을 제외하고 이메일 헤더만 출력합니다 $this->email->print_debugger(array('headers'));
참고
기본적으로 모든 원시 데이터가 출력됩니다.