Spec-Zone.ru › CodeIgniter 3

Класс Email

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

  • Несколько протоколов: Mail, Sendmail и SMTP
  • Шифрование TLS и SSL для SMTP
  • Несколько получателей
  • CC и BCC
  • Электронная почта в формате HTML или Plaintext
  • Вложения
  • Обёртывание слов
  • Приоритеты
  • Режим пакетной рассылки BCC, позволяющий разбивать большие списки рассылки на небольшие пакеты BCC.
  • Инструменты отладки электронной почты
  • Использование библиотеки Email
    • Отправка электронной почты
    • Настройка параметров электронной почты
      • Настройка параметров электронной почты в файле конфигурации
    • Параметры электронной почты
    • Переопределение обёртывания слов
  • Справочник по классу

Использование библиотеки 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();

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

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

Настройка параметров осуществляется путём передачи массива значений параметров в метод инициализации email. Вот пример настройки некоторых параметров:

$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() если вы сохраните свои параметры в файле конфигурации.

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

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

Параметр Значение по умолчанию Варианты Описание
useragent CodeIgniter Нет «Агент пользователя».
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 (в секундах).
smtp_keepalive FALSE TRUE или FALSE (булево) Включить постоянные подключения SMTP.
smtp_crypto Нет значения по умолчанию tls или ssl Шифрование SMTP
wordwrap TRUE TRUE или FALSE (булево) Включить обёртывание слов.
wrapchars 76 Количество символов для обёртывания.
mailtype text text или html Тип почты. Если вы отправляете HTML-почту, вы должны отправить её как полную веб-страницу. Убедитесь, что у вас нет относительных ссылок или относительных путей к изображениям, иначе они не будут работать.
charset utf-8 Набор символов (utf-8, iso-8859-1 и т. д.).
validate FALSE TRUE или FALSE (булево) Требовать валидацию адреса электронной почты.
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 или FALSE (булево) Включить режим пакетной рассылки BCC.
bcc_batch_size 200 Нет Количество электронных писем в каждой пакетной рассылке BCC.
dsn FALSE TRUE или FALSE (булево) Включить уведомление сообщения с сервера

Переопределение обёртывания слов

Если обёртывание слов включено (рекомендуется для соответствия 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}

Справочник по классу

class CI_Email
from($from[, $name = ''[, $return_path = NULL]])
Параметры:
  • $from (string) – Адрес электронной почты «От»
  • $name (string) – Имя для отображения адреса «От»
  • $return_path (string) – (необязательно) адрес электронной почты для перенаправления не доставленных писем
Возвращаемое значение:

Экземпляр CI_Email (цепочка методов)

Тип возвращаемого значения:

CI_Email

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

$this->email->from('you@example.com', 'Your Name');

Вы также можете установить значение Return-Path для перенаправления не доставленных писем:

$this->email->from('you@example.com', 'Your Name', 'returned_emails@example.com');

Примечание

Return-Path нельзя использовать, если протокол установлен на «smtp».

reply_to($replyto[, $name = ''])
Параметры:
  • $replyto (string) – Адрес электронной почты для ответов
  • $name (string) – Имя для отображения адреса reply-to
Возвращаемое значение:

Экземпляр CI_Email (цепочка методов)

Тип возвращаемого значения:

CI_Email

Устанавливает адрес для ответов. Если информация не предоставлена, используется информация из метода :meth:from. Пример:

$this->email->reply_to('you@example.com', 'Your Name');
to($to)
Параметры:
  • $to (mixed) – Строка адресов электронной почты, разделённая запятыми, или массив адресов
Возвращаемое значение:

Экземпляр CI_Email (цепочка методов)

Тип возвращаемого значения:

CI_Email

Устанавливает адрес(ы) получателя(ей). Может быть один адрес, список, разделённый запятыми, или массив:

$this->email->to('someone@example.com');
$this->email->to('one@example.com, two@example.com, three@example.com');
$this->email->to(
        array('one@example.com', 'two@example.com', 'three@example.com')
);
cc($cc)
Параметры:
  • $cc (mixed) – Строка адресов электронной почты, разделённая запятыми, или массив адресов
Возвращаемое значение:

Экземпляр CI_Email (цепочка методов)

Тип возвращаемого значения:

CI_Email

Устанавливает адреса CC. Аналогично методу «to», может быть один адрес, список, разделённый запятыми, или массив.

bcc($bcc[, $limit = ''])
Параметры:
  • $bcc (mixed) – Строка адресов электронной почты, разделённая запятыми, или массив адресов
  • $limit (int) – Максимальное количество писем в одной отправке
Возвращаемое значение:

Экземпляр CI_Email (цепочка методов)

Тип возвращаемого значения:

CI_Email

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

Если $limit задан, будет включен режим отправки по партиям, отправка в партиях, при этом каждая партия не превысит заданного $limit.

subject($subject)
Параметры:
  • $subject (string) – Тема письма
Возвращаемое значение:

Экземпляр CI_Email (цепочка методов)

Тип возвращаемого значения:

CI_Email

Устанавливает тему письма:

$this->email->subject('This is my subject');
message($body)
Параметры:
  • $body (string) – Тело письма
Возвращаемое значение:

Экземпляр CI_Email (цепочка методов)

Тип возвращаемого значения:

CI_Email

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

$this->email->message('This is my message');
set_alt_message($str)
Параметры:
  • $str (string) – Альтернативное тело письма
Возвращаемое значение:

Экземпляр CI_Email (цепочка методов)

Тип возвращаемого значения:

CI_Email

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

$this->email->set_alt_message('This is the alternative message');

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

set_header($header, $value)
Параметры:
  • $header (string) – Название заголовка
  • $value (string) – Значение заголовка
Возвращаемое значение:

Экземпляр CI_Email (цепочка методов)

Тип возвращаемого значения:

CI_Email

Добавляет дополнительные заголовки к письму:

$this->email->set_header('Header1', 'Value1');
$this->email->set_header('Header2', 'Value2');
clear([$clear_attachments = FALSE])
Параметры:
  • $clear_attachments (bool) – Удалять ли вложения
Возвращаемое значение:

Экземпляр CI_Email (цепочка методов)

Тип возвращаемого значения:

CI_Email

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

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);
send([$auto_clear = TRUE])
Параметры:
  • $auto_clear (bool) – Автоматически очищать данные сообщения
Возвращаемое значение:

TRUE при успехе, FALSE при ошибке

Тип возвращаемого значения:

bool

Метод отправки письма. Возвращает boolean TRUE или FALSE в зависимости от успеха или неудачи, что позволяет использовать его условно:

if ( ! $this->email->send())
{
        // Generate error
}

Этот метод автоматически очистит все параметры, если запрос был успешен. Чтобы остановить это поведение, передайте FALSE:

if ($this->email->send(FALSE))
{
        // Parameters won't be cleared
}

Примечание

Для использования метода print_debugger() необходимо избегать очистки параметров электронной почты.

attach($filename[, $disposition = ''[, $newname = NULL[, $mime = '']]])
Параметры:
  • $filename (string) – Имя файла
  • $disposition (string) – ‘disposition’ вложения. Большинство почтовых клиентов принимают собственное решение независимо от используемой здесь спецификации MIME. https://www.iana.org/assignments/cont-disp/cont-disp.xhtml
  • $newname (string) – Пользовательское имя файла для использования в электронном письме
  • $mime (string) – Тип MIME для использования (полезно для буферизованных данных)
Возвращаемое значение:

Экземпляр CI_Email (цепочка методов)

Тип возвращаемого значения:

CI_Email

Позволяет отправлять вложение. В первом параметре укажите путь/имя файла. Для нескольких вложений используйте метод несколько раз. Например:

$this->email->attach('/path/to/photo1.jpg');
$this->email->attach('/path/to/photo2.jpg');
$this->email->attach('/path/to/photo3.jpg');

Чтобы использовать стандартное расположение (вложение), оставьте второй параметр пустым, в противном случае используйте пользовательское расположение:

$this->email->attach('image.jpg', 'inline');

Вы также можете использовать URL:

$this->email->attach('http://example.com/filename.pdf');

Если вы хотите использовать пользовательское имя файла, вы можете использовать третий параметр:

$this->email->attach('filename.pdf', 'attachment', 'report.pdf');

Если вам нужно использовать строку буфера вместо реального физического файла, вы можете использовать первый параметр как буфер, третий параметр как имя файла, а четвертый параметр как тип MIME:

$this->email->attach($buffer, 'attachment', 'report.pdf', 'application/pdf');
attachment_cid($filename)
Параметры:
  • $filename (string) – Существующее имя файла вложения
Возвращаемое значение:

Идентификатор содержимого вложения или FALSE, если не найден

Тип возвращаемого значения:

string

Устанавливает и возвращает идентификатор содержимого вложения, что позволяет встраивать встроенное (изображение) вложение в HTML. Первый параметр должен быть именем уже прикрепленного файла.

$filename = '/img/photo1.jpg';
$this->email->attach($filename);
foreach ($list as $address)
{
        $this->email->to($address);
        $cid = $this->email->attachment_cid($filename);
        $this->email->message('<img src="cid:'. $cid .'" alt="photo1" />');
        $this->email->send();
}

Примечание

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

print_debugger([$include = array('headers', 'subject', 'body')])
Параметры:
  • $include (array) – Какие части сообщения распечатать
Возвращаемое значение:

Отформатированные отладочные данные

Тип возвращаемого значения:

string

Возвращает строку, содержащую любые сообщения сервера, заголовки электронной почты и сообщение электронной почты. Полезно для отладки.

Вы можете необязательно указать, какие части сообщения нужно напечатать. Допустимые параметры: headers, subject, body.

Пример:

// You need to pass FALSE while sending in order for the email data
// to not be cleared - if that happens, print_debugger() would have
// nothing to output.
$this->email->send(FALSE);

// Will only print the email headers, excluding the message subject and body
$this->email->print_debugger(array('headers'));

Примечание

По умолчанию будут напечатаны все сырые данные.

© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/userguide3/libraries/email.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API