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

3 минут чтения Administrator

Комментарии (0)

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

Автор контента

Administrator

Оффлайн

Administrator

Последняя авторизация: 05.07.2026 18:32

  • Страница размещена: 21.01.2025 10:00
  • Последнее обновление: 21.01.2025 10:00