Подробная информация о серверах, через которые проходит система, показана в верхней части заголовка письма в обратном хронологическом порядке - самые последние находятся вверху, первые серверы - внизу.
Быстрое решение, состоящее в том, чтобы не использовать, - использовать RegExp, чтобы попытаться найти нижнюю строку «Received: ...», содержащую IP-адрес.
Очень быстрый тест предполагает, что:
$regExp = '/Received:.*((?:\d+\.){3}\d+)/';
будет соответствовать линиям и возвращать IP-адреса.
Тогда вы просто используете что-то вроде preg_match_all()
, чтобы вернуть массив совпавших строк, и используете последнюю из лота.