Класс Email
Надежный класс Email в CodeIgniter поддерживает следующие функции:
- Множество протоколов: Mail, Sendmail и SMTP
- Множество получателей
- CC и BCC
- HTML и Plaintext электронные письма
- Вложения
- Перенос слов
- Приоритеты
- Режим BCC Batch, позволяющий разбивать большие списки адресов электронной почты на меньшие пакеты BCC.
- Средства отладки Email
Отправка электронной почты
Отправка электронной почты не только очень проста, но также может быть сконфигурирована на лету или задана настройками в файле конфигурации.
Вот пример, демонстрирующий, как отправить электронную почту в вашем контроллере.
$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(), если вы сохранили ваши параметры указанным образом в конфигурационном файле.
Параметры электронной почты
Вот список всех параметров, которые вы можете установить для отправки электронной почты.
Параметр | Значение по умолчанию | Опции | Описание |
---|---|---|---|
useragent | CodeIgniter | Нет | Агент пользователя "user agent". |
protocol | mail, sendmail или smtp | Протокол отправки электронной почты. | |
mailpath | /usr/sbin/sendmail | Нет | Серверный путь к Sendmail. |
smtp_host | Нет | Нет | Серверный адрес SMTP. |
smtp_user | Нет | Нет | Имя пользователя SMTP. |
smtp_pass | Нет | Нет | Пароль SMTP. |
smtp_port | 25 | Нет | Порт SMTP. |
smtp_timeout | 5 | Нет | Таймаут SMTP (в секундах). |
wordwrap | TRUE | TRUE или FALSE (boolean) | Включить перенос слов. |
wrapchars | 76 | Количество символов в строке для переноса слов. | |
mailtype | text | text или html | Тип почты. Если вы отправляете письма HTML, вы должны отправлять их как полную веб-страницу. Убедитесь в том, что она не содержит внутренних ссылок или путей к изображениям, иначе они не будут работать. |
charset | utf-8 | Кодировка (utf-8, iso-8859-1 и так далее). | |
validate | FALSE | TRUE или FALSE (boolean) | Проверять ли правильность написания адреса электронной почты. |
priority | 3 | 1, 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_mode | FALSE | TRUE или FALSE (boolean) | Включает режим BCC Batch. |
bcc_batch_size | 200 | Нет | Количество писем в каждом пакете 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}