Email 클래스

CodeIgniter의 강력한 이메일(email) 클래스는 다음 기능을 지원합니다.

  • 여러 프로토콜 : 메일, Sendmail 및 SMTP
  • SMTP 용 TLS 및 SSL 암호화
  • 여러 수신자
  • CC 및 BCC
  • HTML 또는 일반 텍스트 이메일
  • 첨부
  • 단어 줄 바꿈
  • 우선 순위
  • 큰 이메일 목록을 작은 크기의 BCC 배치로 나눌 수있는 BCC 배치 모드
  • 이메일 디버깅 도구

이메일 라이브러리 사용

이메일 보내기

이메일 전송은 간단하며 관련 구성을 즉시하거나 app/Config/Email.php 파일을 통하여 환경 설정을 구성할 수 있습니다.

다음은 이메일을 보내는 방법을 보여주는 기본 예입니다.

$email = \Config\Services::email();

$email->setFrom('your@example.com', 'Your Name');
$email->setTo('someone@example.com');
$email->setCC('another@another-example.com');
$email->setBCC('them@their-example.com');

$email->setSubject('Email Test');
$email->setMessage('Testing the email class.');

$email->send();

이메일 환경 설정

이메일 메시지 전송 방식을 조정하기 위해 21가지 기본 설정을 사용할 수 있습니다. 여기에 설명 된대로 수동으로 설정하거나, 아래 설명된 구성 파일에 저장된 환경 설정을 통해 자동으로 설정할 수 있습니다.

기본 설정 값을 이메일 초기화 방법으로 전달하면 기본 설정이 설정됩니다. 다음은 일부 환경 설정을 설정하는 방법에 대한 예입니다.

$config['protocol'] = 'sendmail';
$config['mailPath'] = '/usr/sbin/sendmail';
$config['charset']  = 'iso-8859-1';
$config['wordWrap'] = true;

$email->initialize($config);

Note

기본 설정에는 설정하지 않은 경우, 대부분 사용되는 기본값이 있습니다.

구성 파일에서 이메일 환경 설정

위의 방법을 사용하여 환경 설정을 설정하지 않으려면 구성 파일에 환경 설정을 넣을 수 있습니다. app/Config/Email.php 파일을 열고 각 이메일 속성에 구성을 설정하십시오. 그런 다음 파일을 저장하면 자동으로 사용됩니다. 구성 파일에서 환경 설정을 설정한 경우 $email->initialize() 메소드를 사용할 필요가 없습니다.

이메일 환경 설정

다음은 이메일을 보낼 때 설정할 수있는 모든 환경 설정 목록입니다.

Preference Default Value Options Description
userAgent CodeIgniter None user agent
protocol mail mail, sendmail, or smtp 메일 전송 프로토콜
mailpath /usr/sbin/sendmail None Sendmail의 서버 경로
SMTPHost No Default None SMTP Server Address
SMTPUser No Default None SMTP Username
SMTPPass No Default None SMTP Password
SMTPPort 25 None SMTP Port
SMTPTimeout 5 None SMTP Timeout (초)
SMTPKeepAlive FALSE TRUE or FALSE (boolean) 지속적인 SMTP 연결을 활성화 여부
SMTPCrypto No Default tls or ssl SMTP Encryption
wordWrap TRUE TRUE or FALSE (boolean) 자동 줄 바꿈을 활성화 여부
wrapChars 76   랩핑할 문자 수
mailType text text or html 메일 유형. HTML 이메일을 보내려면 완전한 웹 페이지로 보내야합니다. 상대 링크 또는 상대 이미지 경로가 없는지 확인하십시오. 그렇지 않으면 작동하지 않습니다.
charset utf-8   Character set (utf-8, iso-8859-1, etc.).
validate TRUE TRUE or FALSE (boolean) 이메일 주소의 유효성 검사 여부
priority 3 1, 2, 3, 4, 5 이메일 우선 순위: 1 = highest. 5 = lowest. 3 = normal.
CRLF \n “\r\n” or “\n” or “\r” Newline character. (Use “\r\n” to comply with RFC 822).
newline \n “\r\n” or “\n” or “\r” Newline character. (Use “\r\n” to comply with RFC 822).
BCCBatchMode FALSE TRUE or FALSE (boolean) BCC 배치 모드 활성화 여부
BCCBatchSize 200 None 각 BCC 배치의 이메일 수
DSN FALSE TRUE or FALSE (boolean) 서버 알림 메시지 사용 여부

단어 줄 바꿈 무시

단어 줄 바꿈을 사용하도록 설정하고 (RFC 822를 준수하도록 권장), 전자 메일의 링크가 너무 길면, 줄 바꿈이 되어 받은 사람이 링크를 클릭할 수 없게 됩니다. CodeIgniter는 다음과 같이 메시지의 일부에서 단어 줄 바꿈을 수동으로 무시할 수 있습니다

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}

Class Reference

CodeIgniter\Email\Email
setFrom($from[, $name = ''[, $returnPath = null]])
Parameters:
  • $from (string) – “From” e-mail 주소
  • $name (string) – “From” 표시할 이름
  • $returnPath (string) – 배달되지 않은 이메일을 리디렉션할 이메일 주소 (선택 사항)
Returns:

CodeIgniter\Email\Email instance (method chaining)

Return type:

CodeIgniter\Email\Email

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

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

배달되지 않은 메일을 리디렉션하는 데 도움이 되도록 Return-Path를 설정할 수 있습니다.

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

Note

프로토콜로 ‘smtp’를 구성한 경우 Return-Path를 사용할 수 없습니다.

setReplyTo($replyto[, $name = ''])
Parameters:
  • $replyto (string) – E-mail 답장 주소
  • $name (string) – 회신 이메일 주소의 표시 이름
Returns:

CodeIgniter\Email\Email instance (method chaining)

Return type:

CodeIgniter\Email\Email

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

Example:

$email->setReplyTo('you@example.com', 'Your Name');
setTo($to)
Parameters:
  • $to (mixed) – 쉼표로 구분된 문자열 또는 이메일 주소 배열
Returns:

CodeIgniter\Email\Email instance (method chaining)

Return type:

CodeIgniter\Email\Email

수신자의 이메일 주소를 설정합니다. 이메일 주소 또는 쉼표로 구분된 이메일 목록, 이메일 배열일 수 있습니다.

$email->setTo('someone@example.com');
$email->setTo('one@example.com, two@example.com, three@example.com');
$email->setTo(['one@example.com', 'two@example.com', 'three@example.com']);
setCC($cc)
Parameters:
  • $cc (mixed) – 쉼표로 구분된 문자열 또는 이메일 주소 배열
Returns:

CodeIgniter\Email\Email instance (method chaining)

Return type:

CodeIgniter\Email\Email

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

setBCC($bcc[, $limit = ''])
Parameters:
  • $bcc (mixed) – 쉼표로 구분된 문자열 또는 이메일 주소 배열
  • $limit (int) – 배치당 보낼 최대 전자 메일 수
Returns:

CodeIgniter\Email\Email instance (method chaining)

Return type:

CodeIgniter\Email\Email

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

$limit가 설정되면 “batch mode”가 활성화되어 각 배치가 지정된 $limit를 초과하지 않는 이메일을 배치로 보냅니다.

setSubject($subject)
Parameters:
  • $subject (string) – E-mail 제목
Returns:

CodeIgniter\Email\Email instance (method chaining)

Return type:

CodeIgniter\Email\Email

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

$email->setSubject('This is my subject');
setMessage($body)
Parameters:
  • $body (string) – E-mail 메시지 본문
Returns:

CodeIgniter\Email\Email instance (method chaining)

Return type:

CodeIgniter\Email\Email

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

$email->setMessage('This is my message');
setAltMessage($str)
Parameters:
  • $str (string) – 대체 이메일 메시지 본문
Returns:

CodeIgniter\Email\Email instance (method chaining)

Return type:

CodeIgniter\Email\Email

대체 이메일 메시지 본문을 설정합니다.

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

이것은 HTML 형식의 전자 메일을 보내는 경우 사용할 수 있는 선택적 메시지 문자열입니다. HTML 전자 메일을 수락하지 않는 사람들을 위해 헤더 문자열에 추가되는 HTML 형식이 없는 대체 메시지를 지정할 수 있습니다. 메시지를 설정하지 않으면 CodeIgniter는 HTML 이메일에서 메시지를 추출하고 태그를 제거합니다.

setHeader($header, $value)
Parameters:
  • $header (string) – Header 이름
  • $value (string) – Header 값
Returns:

CodeIgniter\Email\Email instance (method chaining)

Return type:

CodeIgniter\Email\Email

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

$email->setHeader('Header1', 'Value1');
$email->setHeader('Header2', 'Value2');
clear($clearAttachments = false)
Parameters:
  • $clearAttachments (bool) – 첨부 파일 삭제 여부
Returns:

CodeIgniter\Email\Email instance (method chaining)

Return type:

CodeIgniter\Email\Email

모든 이메일 변수를 빈 상태로 초기화합니다. 이 메소드는 전자 메일 전송 방법을 루프로 실행할 때 데이터를 재설정할 수 있도록 하기 위한 것입니다.

foreach ($list as $name => $address)
{
        $email->clear();

        $email->setTo($address);
        $email->setFrom('your@example.com');
        $email->setSubject('Here is your info '.$name);
        $email->setMessage('Hi ' . $name . ' Here is the info you requested.');
        $email->send();
}

매개 변수를 TRUE로 설정하면 첨부 파일도 지워집니다.

$email->clear(true);
send($autoClear = true)
Parameters:
  • $autoClear (bool) – 메시지 데이터 자동 삭제 여부
Returns:

성공하면 TRUE, 실패하면 FALSE

Return type:

bool

이메일 전송 방법. 성공 또는 실패에 따라 부울 TRUE 또는 FALSE를 반환하여 조건부로 사용할 수 있습니다.

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

요청이 성공하면 이 메소드는 모든 매개 변수를 자동으로 삭제합니다. 이 동작을 중지하려면 FALSE를 전달하십시오.

if ($email->send(false))
{
        // Parameters won't be cleared
}

Note

printDebugger() 메소드를 사용하려면 이메일 매개 변수를 삭제하지 않아야 합니다.

Note

BCCBatchMode가 활성화되어 있고 BCCBatchSize 수신자가 여러 명인 경우 이 메소드는 항상 부울 TRUE를 반환합니다.

attach($filename[, $disposition = ''[, $newname = null[, $mime = '']]])
Parameters:
  • $filename (string) – 파일 명
  • $disposition (string) – 첨부 파일의 ‘분할’. 대부분의 전자 메일 클라이언트는 여기에서 사용되는 MIME 규격에 관계없이 자체적으로 결정합니다. https://www.iana.org/assignments/cont-disp/cont-disp.xhtml
  • $newname (string) – 이메일에 사용할 사용자 정의 파일 이름
  • $mime (string) – 사용할 MIME 유형(버퍼링된 데이터에 사용 가능).
Returns:

CodeIgniter\Email\Email instance (method chaining)

Return type:

CodeIgniter\Email\Email

첨부 파일을 보낼 수 있습니다. 첫 번째 매개 변수에 파일 경로 / 이름을 입력하십시오. 여러 파일을 첨부하려면 메소드를 여러 번 사용합니다.

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

기본 분할(첨부 파일)를 사용하려면, 두 번째 매개 변수를 비워 두십시오. 그렇지 않으면 사용자 지정 처리를 사용하십시오.

$email->attach('image.jpg', 'inline');

URL을 사용할 수도 있습니다.

$email->attach('http://example.com/filename.pdf');

사용자 정의 파일 이름을 사용하려는 경우 세 번째 매개 변수를 사용합니다.

$email->attach('filename.pdf', 'attachment', 'report.pdf');

실제 파일 대신 버퍼 문자열을 사용해야 하는 경우 첫 번째 매개 변수를 버퍼로, 세 번째 매개 변수를 파일 이름으로, 네 번째 매개 변수를 mime-type으로 사용할 수 있습니다.

$email->attach($buffer, 'attachment', 'report.pdf', 'application/pdf');
setAttachmentCID($filename)
Parameters:
  • $filename (string) – 기존 첨부 파일 이름
Returns:

첨부 파일 Content-ID, 발견되지 않은 경우 FALSE

Return type:

string

첨부 파일의 Content-ID를 설정하고 반환하여, HTML에 인라인(이미지) 첨부 파일을 포함할 수 있습니다. 첫 번째 매개 변수는 이미 첨부된 파일 이름이어야 합니다.

$filename = '/img/photo1.jpg';
$email->attach($filename);
foreach ($list as $address)
{
        $email->setTo($address);
        $cid = $email->setAttachmentCID($filename);
        $email->setMessage('<img src="cid:'. $cid .'" alt="photo1" />');
        $email->send();
}

Note

고유한 이메일을 만들려면 각 이메일의 Content-ID를 다시 작성해야 합니다.

printDebugger($include = ['headers', 'subject', 'body'])
Parameters:
  • $include (array) – 인쇄 할 메시지 부분
Returns:

형식화된 디버그 데이터

Return type:

string

서버 메시지, 이메일 헤더, 메시지가 포함된 문자열을 반환합니다. 디버깅에 유용합니다.

메시지의 인쇄 할 부분을 선택적으로 지정할 수 있습니다. 유효한 옵션 : headers, subject, body.

// You need to pass FALSE while sending in order for the email data
// to not be cleared - if that happens, printDebugger() would have
// nothing to output.
$email->send(false);

// Will only print the email headers, excluding the message subject and body
$email->printDebugger(['headers']);

Note

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