Фреймворк CodeIgniter Version 2.1.3


Класс Email

Надежный класс Email в CodeIgniter поддерживает следующие функции:

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

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

Вот пример, демонстрирующий, как отправить электронную почту в вашем контроллере.

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

$this->email->from('your@example.com', 'Ваше имя');
$this->email->to('someone@example.com');
$this->email->cc('another@another-example.com');
$this->email->bcc('them@their-example.com');

$this->email->subject('Тестовое сообщение');
$this->email->message('Проверка класса email.');

$this->email->send();

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

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

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

Параметры устанавливаются передачей массива с настройками функции, инициализизирующей класс Email. Вот пример:

$config['protocol'] = 'sendmail';
$config['mailpath'] = '/usr/sbin/sendmail';
$config['charset'] = 'iso-8859-1';
$config['wordwrap'] = TRUE;

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

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

Установка параметров в конфигурационном файле

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

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

Вот список всех параметров, которые вы можете установить для отправки электронной почты.

Параметр Значение по умолчанию Опции Описание
useragentCodeIgniterНетАгент пользователя "user agent".
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) Проверять ли правильность написания адреса электронной почты.
priority31, 2, 3, 4, 5Приоритет почты. 1 = высший. 5 = низший. 3 = обычный.
crlf \n "\r\n" or "\n" or "\r" Символ новой строки. (Используйте "\r\n" в соответствии с RFC 822).
newline\n "\r\n" or "\n" or "\r"Символ новой строки. (Используйте "\r\n" в соответствии с RFC 822).
bcc_batch_modeFALSETRUE или FALSE (boolean)Включает режим BCC Batch.
bcc_batch_size200НетКоличество писем в каждом пакете BCC batch.

Справка по функциям класса Email

$this->email->from()

Устанавливает адрес и имя отправителя письма:

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

$this->email->reply_to()

Устанавливает адрес reply-to (перенаправлено). Если информация не предоставлена, используется информация из функции from. Пример:

$this->email->reply_to('you@example.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()

Инициализирует все переменные электронной почты в пустое состояние. Эта функция может быть использована, если вы отправляете почту в цикле, сбрасывая данные между его итерациями.

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

    $this->email->to($address);
    $this->email->from('your@example.com');
    $this->email->subject('Ваша информация, '.$name);
    $this->email->message('Привет, '.$name.'. Вот информация, которую вы запрашивали.');
    $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 позволяет вам вручную переопределять переносы слов в частях вашего сообщения:

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}

    Поддержать сайт на родительском проекте КГБ