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

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

$config['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 인스턴스 (메소드 체이닝)

반환 형식:

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 인스턴스 (메소드 체이닝)

반환 형식:

CI_Email

회신 주소를 설정합니다. 정보가 제공되지 않으면 :meth:from 메소드의 정보가 사용됩니다. 예시:

$this->email->reply_to('you@example.com', 'Your Name');
to($to)
매개변수:
  • $to (mixed) – 쉼표로 구분된 문자열 또는 이메일 주소 배열

반환:

CI_Email 인스턴스 (메소드 체이닝)

반환 형식:

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 인스턴스 (메소드 체이닝)

반환 형식:

CI_Email

CC 이메일 주소를 설정합니다. “to”와 마찬가지로 단일 이메일, 쉼표로 구분된 목록 또는 배열이 될 수 있습니다.

bcc($bcc[, $limit = ''])
매개변수:
  • $bcc (mixed) – 쉼표로 구분된 문자열 또는 이메일 주소 배열

  • $limit (int) – 배치당 보낼 최대 이메일 수

반환:

CI_Email 인스턴스 (메소드 체이닝)

반환 형식:

CI_Email

BCC 이메일 주소를 설정합니다. to() 메소드와 마찬가지로 단일 이메일, 쉼표로 구분된 목록 또는 배열이 될 수 있습니다.

$limit가 설정되면 “배치 모드”가 활성화되어 각 배치가 지정된 $limit를 초과하지 않도록 배치로 이메일을 전송합니다.

subject($subject)
매개변수:
  • $subject (string) – 이메일 제목 줄

반환:

CI_Email 인스턴스 (메소드 체이닝)

반환 형식:

CI_Email

이메일 제목을 설정합니다:

$this->email->subject('This is my subject');
message($body)
매개변수:
  • $body (string) – 이메일 메시지 본문

반환:

CI_Email 인스턴스 (메소드 체이닝)

반환 형식:

CI_Email

이메일 메시지 본문을 설정합니다:

$this->email->message('This is my message');
set_alt_message($str)
매개변수:
  • $str (string) – 대체 이메일 메시지 본문

반환:

CI_Email 인스턴스 (메소드 체이닝)

반환 형식:

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 인스턴스 (메소드 체이닝)

반환 형식:

CI_Email

이메일에 추가 헤더를 추가합니다:

$this->email->set_header('Header1', 'Value1');
$this->email->set_header('Header2', 'Value2');
clear([$clear_attachments = FALSE])
매개변수:
  • $clear_attachments (bool) – 첨부 파일을 지울지 여부

반환:

CI_Email 인스턴스 (메소드 체이닝)

반환 형식:

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 인스턴스 (메소드 체이닝)

반환 형식:

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'));

참고

기본적으로 모든 원시 데이터가 출력됩니다.