CodeIgniter, руководство пользователя к версии 1.6.1


Класс Email

Класс Email поддерживает следующие возможности:

Отправка сообщений

Отправка сообщений проста. Вы можете настроить её «на лету» или задать настройки в файле конфигурации.

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

$this->load->library('email');

$this->email->from('your@your-site.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');
$this->email->message('Тестирование класса отправки сообщений');

$this->email->send();

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

Настройка параметров письма

Существует 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.

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

Функции класса Email

$this->email->from()

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

$this->email->from('you@your-site.com', 'Ваше Имя');

$this->email->reply_to()

Устанавливает адрес для ответа, если не была указана информация в функции "from". Пример:

$this->email->reply_to('you@your-site.com', 'Ваше Имя');

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

Устанавливает текст сообщения:

$this->email->message('Вот мое сообщение');

$this->email->set_alt_message()

Задает текст альтернативного сообщения:

$this->email->set_alt_message('Альтернативное сообщение');

Это — дополнительная строка сообщения, которая может быть использована, если вы посылаете письмо HTML-формата. Это позволяет вам определить альтернативное сообщение без HTML-формата, которое будет добавлено к строке заголовка для людей, которые не принимают письма в HTML-формате. Если Вы не установите альтернативное сообщение, CodeIgniter сам извлечет сообщение из HTML письма и удалит все теги.

$this->email->clear()

Очищает все email-переменные. Эта функция обычно используется в том случае, когда вы запускаете функцию отправки писем в цикле, и возникает необходимость сбросить значения между циклами.

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

    $this->email->to($address);
    $this->email->from('your@your-site.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())
{
    // Генерация ошибки
}

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

Возвращает строку, содержащую любые сообщения сервера, заголовки и содержания писем. Необходима при отладке.

Перенос слов

Если включен перенос (соблюдайте стандарт RFC 822) и в письме есть очень длинные ссылки, то они могут быть перенесены и станут нерабочими. CodeIgniter позволяет решить эту проблему:

Текст письма,
который будет перенесен как обычно.

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

Еще какой-то текст,
который будет перенесен как обычно.

Помещайте текст, который не надо переносить, между: {unwrap} {/unwrap}