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