Получите помощь, поддержку и профессиональное общение в Клубе CodeIgniter

# CodeIgniter User Guide Version 2.1.0

Search User Guide

# Класс Email

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

- Множество протоколов: Mail, Sendmail и SMTP
- Множество получателей
- CC и BCC
- HTML и Plaintext
- Вложения
- Перенос слов
- Приоритеты
- Режим BCC Batch, позволяющий разбивать большие списки адресов электронной почты на меньшие пакеты BCC.
- Средства отладки 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 различных настроек, доступных для управления отправкой ваших сообщений. Вы можете установить их вручную или автоматически, с помощью параметров, которые хранятся в файле конфигурации.

Параметры устанавливаются передачей массива с настройками функции, инициализизирующей класс 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 | 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', 'Your Name');`

### $this->email->reply_to()

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

### $this->email->bcc()

Устанавливает адрес (адреса) BCC. Так же как и с to(), можно передать единственный адрес, список через запятую или массив.

### $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');`

Это опциональная строка сообщения, которая будет использована если вы отправляете письма, отформатированные в 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('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 позволяет вам вручную переопределять переносы слов в частях вашего сообщения:

`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}

### Поделиться

Переведено в компании Аринт.

# Спасибо!

Вы тоже можете оказать помощь проекту! Как это сделать?

## Помощь и поддержка

Вы можете задать вопросы и получить ответы и советы от гуру CodeIgniter и веб-разработки: вступайте в Клуб CodeIgniter