Сбой PHPList для адресов электронной почты с начальными, конечными или несколькими соседними точками

PHPList (версия 2.10.17) не может отправлять сообщения на адреса, которые соответствуют одному из следующих форматов:

my..Name@domain.com
myName.@domain.com
.myName@domain.com

сообщение об ошибке Could not instantiate mail function.Код в вопросе:

function MailSend($header, $body) {
    $to = "";
    for($i = 0; $i < count($this->to); $i++)
    {
        if($i != 0) { $to .= ", "; }
        $to .= $this->to[$i][0];
    }

    if ($this->Sender != "" && (bool) ini_get("safe_mode") === FALSE)
    {
        $old_from = ini_get("sendmail_from");
        ini_set("sendmail_from", $this->Sender);
        $params = sprintf("-oi -f %s", $this->Sender);
        $rt = @mail($to, $this->EncodeHeader($this->Subject), $body,
                    $header, $params);
    }
    else
        $rt = @mail($to, $this->EncodeHeader($this->Subject), $body, $header);

    if (isset($old_from))
        ini_set("sendmail_from", $old_from);

    if(!$rt)
    {
        $this->SetError($this->Lang("instantiate"));
        return false;
    }

    return true;
}

Выбранный путь к коду:

   else
      $rt = @mail($to, $this->EncodeHeader($this->Subject), $body, $header);

Я не смог воспроизвести эту ошибку на своем веб-сервере, где я настроил PHPList для тестирования.
К сожалению, единственная система, которая показывает это поведение, является производственной системой. Кроме того, у меня нет доступа к файлам журналов в этой системе, поэтому я не знаю, что не так.
Мое лучшее предположение, что какой-то "выход строки" на $to необходимо, чтобы это работало, но я несколько неохотно вмешиваюсь в производственную систему (за исключением вставки некоторого вывода журнала).

Кто-нибудь знает решение этой проблемы?

1 ответ

Решение

Это не ошибка, это ожидаемое поведение. Локальная часть адреса электронной почты (часть до @) может содержать .при условии, что он не является ни первым, ни последним символом, а также при условии, что он не появляется два или более раз подряд. Это означает, что все три примера являются недействительными адресами электронной почты.

Узнайте больше о действительных адресах электронной почты.

Другие вопросы по тегам