이메일 Email Class
CodeIgniter 의 이메일 클래스는 다음의 기능을 제공합니다:
- 다양한 프로토콜지원( Mail, Sendmail, and SMTP)
- 다수의 수신자
- CC 와 BCC
- HTML 또는 일반 텍스트 이메일
- 파일첨부
- 자동줄바꿈(Word wrapping)
- 우선순위설정(Priorities)
- 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();
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
아래는 이메일 전송시 사용되는 설정 항목입니다.
항목 | 기본값 | 옵션 | 설명 |
---|---|---|---|
useragent | CodeIgniter | None | The "user agent". |
protocol | mail, sendmail, or smtp | 메일전송 프로토콜(The mail sending protocol). | |
mailpath | /usr/sbin/sendmail | None | Sendmail함수의 서버상 경로(The server path to Sendmail).리눅스(유닉스)에서 제공하는 sendmail을 말함 |
smtp_host | No Default | None | SMTP서버주소(SMTP Server Address). |
smtp_user | No Default | None | SMTP서버 사용자 아이디(SMTP Username). |
smtp_pass | No Default | None | SMTP서버 사용자 암호(SMTP Password). |
smtp_port | 25 | None | SMTP서버 포트(SMTP Port). |
smtp_timeout | 5 | None | SMTP서버 타임아웃(최대처리 혹은 대기)시간(초)(SMTP Timeout (in seconds)). |
wordwrap | TRUE | TRUE or FALSE (boolean) | 자동줄바꿈(Enable word-wrap). |
wrapchars | 76 | 자동줄바꿈시 한줄에 몇개의 문자를 허용할것인가를결정(Character count to wrap at). | |
mailtype | text | text or html | 메일 타입(일반텍스트/ html). 만약 html 형태의 메일을 보낸다면 삽입된 링크나 이미지 의 경로는 절대경로를 사용하세요 .그렇지않으면 여러분의 컴퓨터에서 잘보이던 페이지가 메일을 받은사람에게는 이것저것 깨져보일테니까요. |
charset | utf-8 | 문자셋(utf-8, iso-8859-1 등)(Character set (utf-8, iso-8859-1, etc.)). | |
validate | FALSE | TRUE or FALSE (boolean) | 이메일주소가 적합한지 여부를 검사할지 말지 결정(Whether to validate the email address). |
priority | 3 | 1, 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_mode | FALSE | TRUE or FALSE (boolean) | BCC 배치모드 사용여부결정(Enable BCC Batch Mode). |
bcc_batch_size | 200 | None | 각 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}사이에 보호할 부분을 넣습니다