CodeIgniter User Guide Version 2.0.0


Класс Email (электронная почта)

CodeIgniter предоставляет надежный класс Email, со следующими особенностями:

Отправка электронной почты

Отправка электронной почты не только очень проста, но еще вы можете конфигурировать ее на лету, или установить ваши параметры в конфигурационном файле.

Здесь основной пример, демонстрирующий как отправить электронную почту. Примечание: этот пример подразумевает, что вы отправляете электронную почту из одного из ваших контроллеров.

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

Установка параметров электронной почты

Здесь 17 различных параметров, позволяющих управлять отправкой электронной почты. Вы можете устанавливать их вручную или автоматически, указав их в вашем конфигурационном файле.

Параметры устанавливаются передачей массива функции initialize. Вот пример того, как вы можете установить некоторые параметры:

$config['protocol'] = 'sendmail';
$config['mailpath'] = '/usr/sbin/sendmail';
$config['charset'] = 'utf-8';
$config['wordwrap'] = TRUE;

$this->email->initialize($config);

Примечание: Большинство из этих параметров имеют значения по умолчанию, которые могут быть использованы даже если вы не видите их.

Отправка электронной почты с параметрами, указанными в конфигурационном файле

Вы можете поместить параметры в конфигурационный файл. Просто создайте новый файл, с названием email.php, добавьте в него массив $config. Потом сохраните файл как config/email.php и он будет автоматически использоваться. Вам НЕ нужно использовать функцию $this->email->initialize(), если вы сохранили параметры в конфигурационном файле.

Параметры электронной почты

Следующие параметры могут быть использованы при отправке электронной почты.

Параметры Значение по умолчанию Опции Описание
useragentCodeIgniterПользовательский агент, "user agent".
protocolmailmail, sendmail, or smtpПротокол, по которому отправляется почта.
mailpath/usr/sbin/sendmailПуть к Sendmail.
smtp_hostАдрес сервера SMTP.
smtp_userИмя пользователя SMTP.
smtp_passПароль SMTP.
smtp_port25Порт SMTP.
smtp_timeout5Таймаут SMTP (в секундах).
wordwrapTRUETRUE or FALSE (boolean)Включить переносы.
wrapchars76 Длина строки, для переносов.
mailtypetexttext or htmlТип письма. Если вы отправляете письма HTML, вы должны отправлять его полной веб-страницей. Убедитесь, что она не содержит относительных ссылок или изображений с относительными путями — иначе они не будут работать.
charsetutf-8Кодировка (utf-8, iso-8859-1, etc.).
validateFALSETRUE or FALSE (boolean)Проверять ли правильность адресов.
priority31, 2, 3, 4, 5Приоритет письма. 1 = высший. 5 = низший. 3 = нормальный.
crlf \n "\r\n", или "\n", или "\r" Символ новой строки. (используйте "\r\n" в соответствии с RFC 822).
newline\n "\r\n" или "\n" или "\r"Символ новой строки. (Используйте "\r\n" в соответствии RFC 822).
bcc_batch_modeFALSETRUE or FALSE (boolean)Включение режима BCC Batch (см. выше).
bcc_batch_size200NoneКоличеств писем в каждом BCC batch.

Справочник функций класса Email

$this->email->from()

Устанавливает адрес электронной почты и имя персоны, которой отправляется почта:

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

$this->email->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 адрес. Может быть единственным адресом, а также списком, разделенным запятыми, или массивом

$this->email->bcc()

Устанавливает адрес (адреса) BCC. Может быть единственным адресом, а также списком, разделенным запятыми, или массивом.

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

Устанавливает альтернативный текст сообщения:

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

Это опциональная строка сообщения, которое может быть использовано, если вы отправляете письма в формате HMTL. Это позволяет вам указывать альтернативные сообщения без 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 or FALSE, в зависимости от успешности работы:

if ( ! $this->email->send())
{
    // Обслуживаем ошибку
}

$this->email->attach()

Позволяет отправить вложение. Укажите путь и имя файла первым параметром. Примечание: указывайте путь ,а не 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()

Возвращает строку, содержащую сообщения сервера и заголовки email. Полезно для отладки.

Переопределение переносов

Если у вас включен перенос слов (рекомендуемый в соответствии с 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}