CodeIgniter User Guide Version 2.1.0


이메일 Email Class

CodeIgniter 의 이메일 클래스는 다음의 기능을 제공합니다:

이메일 보내기

이메일 보내기는 단순할뿐만아니라, 쉽게 설정을 추가할수 있고 , 원한다면 설정파일에 설정을 세팅할수도 있습니다.

아래에 이메일 보내기 기본 예제이 있습니다.
주의: 이 예제는 여러분이 컨트롤러에서 이메일을 보낸다는것을 가정합니다.

$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();

echo $this->email->print_debugger();

이메일 환경설정 (Setting Email Preferences)

환경설정 항목은 총 17가지 입니다.여기에서 설명하는것 처럼 여러분이 직접 설정할수도 있고 , 설정파일을 통해 자동으로 설정할수도 있습니다:

환경설정을 하려면 먼저 설정내용을 배열로 만든후 , 이메일 초기화(initialize)함수로 전달하면 됩니다.아래에 예제가 있습니다:

$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() 함수를 사용할 필요가 없습니다.

이메일 환경설정 Email Preferences

아래는 이메일 전송시 사용되는 설정 항목입니다.

항목 기본값 옵션 설명
useragentCodeIgniterNoneThe "user agent".
protocolmailmail, sendmail, or smtp 메일전송 프로토콜(The mail sending protocol).
mailpath/usr/sbin/sendmailNone Sendmail함수의 서버상 경로(The server path to Sendmail).리눅스(유닉스)에서 제공하는 sendmail을 말함
smtp_hostNo DefaultNone SMTP서버주소(SMTP Server Address).
smtp_userNo DefaultNone SMTP서버 사용자 아이디(SMTP Username).
smtp_passNo DefaultNone SMTP서버 사용자 암호(SMTP Password).
smtp_port25None SMTP서버 포트(SMTP Port).
smtp_timeout5None SMTP서버 타임아웃(최대처리 혹은 대기)시간(초)(SMTP Timeout (in seconds)).
wordwrapTRUETRUE or FALSE (boolean) 자동줄바꿈(Enable word-wrap).
wrapchars76 자동줄바꿈시 한줄에 몇개의 문자를 허용할것인가를결정(Character count to wrap at).
mailtypetexttext or html 메일 타입(일반텍스트/ html). 만약 html 형태의 메일을 보낸다면 삽입된 링크나 이미지 의 경로는 절대경로를 사용하세요 .그렇지않으면 여러분의 컴퓨터에서 잘보이던 페이지가 메일을 받은사람에게는 이것저것 깨져보일테니까요.
charsetutf-8 문자셋(utf-8, iso-8859-1 등)(Character set (utf-8, iso-8859-1, etc.)).
validateFALSETRUE or FALSE (boolean) 이메일주소가 적합한지 여부를 검사할지 말지 결정(Whether to validate the email address).
priority31, 2, 3, 4, 5 이메일 우선순위1 =가장높음. 5 =가장낮음 . 3 = 중간.
crlf \n "\r\n" or "\n" or "\r" 줄바꿈 문자 ( RFC 822 를 준수하기 위해 "\r\n"을 사용함 ).
newline\n "\r\n" or "\n" or "\r" 줄바꿈 문자 ( RFC 822 를 준수하기 위해 "\r\n"을 사용함 )..
bcc_batch_modeFALSETRUE or FALSE (boolean) BCC 배치모드 사용여부결정(Enable BCC Batch Mode).
bcc_batch_size200None 각 BCC 배치에 몇개의 메일주소를 포함하도록할것인지결정(Number of emails in each BCC batch).

이메일 함수 설명 Email Function Reference

$this->email->from()

메일 보내는 사람의 메일주소와 이름을 설정합니다:

$this->email->from('you@example.com', 'Your Name');

$this->email->reply_to()

답신을 받을(reply-to) 메일 주소와 이름을 설정합니다. 설정하지않으면 from 함수에서 제공된 정보를 기본으로 사용하게 됩니다. 예제:

$this->email->reply_to('you@example.com', 'Your Name');

$this->email->to()

수신자의 이메일주소를 설정합니다. 하나이상의 주소를 설정할수있으며 , 여러개를 설정할때는 콤마(,)로 구분하여 설정하거나, 배열로 넘겨줄수도 있습니다:

$this->email->to('someone@example.com'); $this->email->to('one@example.com, two@example.com, three@example.com'); $list = array('one@example.com', 'two@example.com', 'three@example.com');

$this->email->to($list);

$this->email->cc()

CC 메일주소를 설정합니다. "to" 함수처럼 , 하나이상의 주소를 설정할수있으며 , 여러개를 설정할때는 콤마(,)로 구분하여 설정하거나, 배열로 넘겨줄수도 있습니다

$this->email->bcc()

BCC 메일주소를 설정합니다. "to" 함수처럼 , 하나이상의 주소를 설정할수있으며 , 여러개를 설정할때는 콤마(,)로 구분하여 설정하거나, 배열로 넘겨줄수도 있습니다

$this->email->subject()

메일 제목을 설정합니다:

$this->email->subject('This is my subject');

$this->email->message()

이메일 내용을 설정합니다:

$this->email->message('This is my message');

$this->email->set_alt_message()

HTML 메일을 수신하지 못하는 수신자에게 전달하는경우에 html로 작성된 내용을 대신할 내용을 설정합니다:

$this->email->set_alt_message('This is the alternative message');

이 항목은 html로 내용을 작성할경우에 사용할 수 있는 옵션입니다. html 메세지를 보낼때 본 함수를 사용하여 대체메시지를 작성하시지않으면, CodeIgniter 는 자동으로 html 메세지에서 태그를 제거하여 대체메세지로 사용합니다.

$this->email->clear()

모든 이메일 변수들을 초기화 하여 비웁니다.이 함수는 루프를 이용하여 메일을 전송할 경우를 위하여 각 사이클 마다 데이터를 리셋하도록 해줍니다.

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

$this->email->send()

메일전송함수입니다. 전송성공여부에 따라서 TRUE / FALSE 를 반환합니다.아래와같이 전송성공여부를 체크하여 적절히 코딩하시면 되겠죠:

if ( ! $this->email->send())
{
    // Generate error
}

$this->email->attach()

파일을 첨부할수 있게 해주는 함수입니다. 파일 경로와이름(path/name)을 첫번째 파라미터로 넘겨주세요.
Note: URL이 아니라 파일경로를 넘겨야합니다. 여러개의 파일을 첨부할경우 함수를 여러번 호출해주시면됩니다.
예제:

$this->email->attach('/path/to/photo1.jpg');
$this->email->attach('/path/to/photo2.jpg');
$this->email->attach('/path/to/photo3.jpg');

$this->email->send();

$this->email->print_debugger()

모든 서버메세지,이메일 헤더,이메일 메세지들을 포함한 문자열을 리턴합니다. 디버깅시에 유용함.

자동줄바꿈 재정의 Overriding Word Wrapping

자동줄바꿈을 사용할때, 아주 긴 링크를 포함한메세지의 경우 링크도 줄바꿈 되기때문에 클릭하면 바로 연결되지않는 상황이 발생할수있습니다. 이런경우 메세지의 일부분을 아래와같이 재정의하여 링크를 보호할 수 있습니다:

The text of your email that
gets wrapped normally.

{unwrap}http://example.com/a_long_link_that_should_not_be_wrapped.html{/unwrap}

More text that will be
wrapped normally.

{unwrap} {/unwrap}사이에 보호할 부분을 넣습니다