У меня довольно своеобразная ситуация. Пользователь на моем сайте, который указан для получения уведомлений по электронной почте, не получает свои электронные письма. После некоторого дальнейшего исследования кажется, что это вызвано тем фактом, что exim (по умолчанию) устанавливает 'envelope-from' на @, что не может быть проверено почтовым провайдером пользователя. Вот почему я написал структуру для обработки всех электронных писем некоторое время назад (до того, как я узнал об этом пользователе). Эта функция устанавливает правильные заголовки и устанавливает дополнительный параметр -f, чтобы exim установил правильный адрес электронной почты в качестве адреса отправителя конверта.
Однако по совершенно неизвестным мне причинам этот пользователь, похоже, не получает свои электронные письма, сгенерированные этой функцией. Я тщательно просмотрел свои сценарии и на 99,99% уверен, что нет другого места, откуда этот пользователь мог бы получать свои электронные письма, не говоря уже о том, что нет даже другого вызова функции mail() где-либо в пределах досягаемости. / автоматизированные скрипты. Я хотел бы сказать, что я уверен в этом на 100%, но тот факт, что пользователь по-прежнему получает плохо составленные электронные письма (неправильный конверт и отсутствующие заголовки), как-то противоречит этому. Я написал другой обработчик error_handler, который выполняет расширенную регистрацию, поэтому я знаю, что электронная почта не создается таким образом из-за какой-то ошибки.
Вот почему я хотел бы отключить функцию mail() глобально, чтобы любые вызовы к ней не выполнялись, за исключением одного места в моей почтовой структуре. Поскольку параметр ini disable_functions может быть установлен только в php.ini, я не могу динамически изменить его с помощью ini_set()/ini_restore(). Таким образом, мой вопрос в том, как мне этого добиться?