Функция cot_mailPrepareAddress в Cotonti
Функция cot_mailPrepareAddress предназначена для подготовки адресов электронной почты для использования в заголовках письма, таких как "To", "From", "Cc", и других. Она может обрабатывать как строки, так и массивы адресов.
Описание функции cot_mailPrepareAddress
Функция cot_mailPrepareAddress предназначена для подготовки адресов электронной почты для использования в заголовках письма, таких как "To", "From", "Cc", и других. Она может обрабатывать как строки, так и массивы адресов. В случае массива адресов функция корректно форматирует адреса с именами пользователей и проверяет их на валидность.
Код функции
/** * @param array<int, string[]|string>|string $address * string - email address: * [email protected] * [email protected], [email protected] * User <[email protected]> * User <[email protected]>, Another User <[email protected]> * array: * [['[email protected]', 'User'], '[email protected]', 'User3 <[email protected]>'], * * @return string */ function cot_mailPrepareAddress($address) { if (is_string($address)) { return $address; } if (!is_array($address)) { return ''; } // $address = ['[email protected]', 'User'] if ( count($address) == 2 && is_string($address[0]) && is_string($address[1]) && cot_check_email($address[0]) && !cot_check_email($address[1]) ) { $address[1] = mb_encode_mimeheader($address[1], 'UTF-8', 'B', "\n"); return $address[1] . ' <' . $address[0] . '>'; } $result = []; foreach ($address as $val) { if (is_string($val)) { $result[] = $val; continue; } $val[1] = mb_encode_mimeheader($val[1], 'UTF-8', 'B', "\n"); $result[] = $val[1] . ' <' . $val[0] . '>'; } if (empty($result)) { return ''; } return wordwrap(implode(', ', $result), 70, "\r\n"); }
Параметры:
1. $address (array|string):
Строка: Ожидается строка, представляющая один или несколько email-адресов.
Пример:
"[email protected]"
"User <[email protected]>, Another User <[email protected]>"
Массив: Массив адресов, где каждый элемент может быть строкой или массивом, содержащим адрес и имя.
Пример:
[
['[email protected]', 'User'],
'[email protected]',
'User3 <[email protected]>'
]
Возвращаемое значение:
Строка: Форматированная строка с email-адресами, готовая для использования в заголовках письма.
Логика работы:
Если $address — строка:
Если это просто строка с адресом или несколькими адресами, функция возвращает её без изменений.
Если $address — массив:
Для каждого элемента массива:
Если элемент является строкой, добавляется в итоговый список.
Если элемент является массивом из двух элементов (email и имя), то имя кодируется с помощью mb_encode_mimeheader(), и результат возвращается в виде строки вида: "Имя <email>".
Результат:
Если после обработки есть несколько адресов, они объединяются в одну строку, разделенную запятыми, и возвращаются.
Если список пуст, возвращается пустая строка.
При необходимости строка с адресами будет разделена на несколько строк по 70 символов с использованием wordwrap().
Примеры:
Пример 1: Строка с одним адресом
$address = "[email protected]"; echo cot_mailPrepareAddress($address); // Результат: "[email protected]"
Пример 2: Массив с адресами и именами
$address = [['[email protected]', 'User'], '[email protected]', 'User3 <[email protected]>']; echo cot_mailPrepareAddress($address); // Результат: "User <[email protected]>, [email protected], User3 <[email protected]>"
Пример 3: Массив с некорректным именем
$address = [['[email protected]', 'User'], ['[email protected]', '']]; echo cot_mailPrepareAddress($address); // Результат: "User <[email protected]>, [email protected]"
Особенности:
Функция обрабатывает как простые строки, так и массивы с парами "email и имя".
Проверяет валидность email-адресов с помощью функции cot_check_email().
Кодирует имена с использованием mb_encode_mimeheader(), чтобы поддерживать правильную кодировку и избежать проблем с символами в имени получателя.
Заключение:
Функция cot_mailPrepareAddress полезна для правильной обработки и подготовки email-адресов в различных форматах. Это особенно важно при работе с различными получателями письма, включая использование имен и их корректное кодирование в заголовках сообщений.
Комментарии (0)
Автор контента
Оффлайн
Administrator
Последняя авторизация: 05.07.2026 18:32
- Страница размещена: 21.01.2025 10:00
- Последнее обновление: 21.01.2025 10:00