PHP перенаправить письмо в файл - PullRequest
0 голосов
/ 10 февраля 2012

Я использую php5.

Существуют ли какие-либо настройки или простая директива php.ini, которая перенаправляет все электронные письма в папку?

Я хочу, чтобы на компьютере разработчика все электронные письма, сгенерированные системой, не отправлялись фактическому получателю, а помещались в папку.

Спасибо.

Ответы [ 5 ]

0 голосов
/ 10 сентября 2015

Есть много способов сделать это.По сути, вам нужно определить команду sendmail в вашем php.ini, чтобы она указывала на программу или скрипт, который будет сохранять почту локально.

Одно из следующих решений: Поймать письма с помощью php скрипта

Еще один такой:

Ловец почты

0 голосов
/ 10 февраля 2012

Раньше у меня был такой код (вроде псевдокода):

define ('DEBUG', true);
function send_email($to, $subject, $body) {
    if (DEBUG) {
        file_put_contents('some_folder/' . $to . date('dmY-His') . '.html', $body);
    }else{
        // Actual code to send email
    }
}

Но я согласен с другими, проще / лучше настроить учетную запись электронной почты для разработки, чтобы получать эти письма.

0 голосов
/ 10 февраля 2012

Нет настроек, которые мне известны в самом PHP.Однако, если вы используете Postfix на сервере разработки, вот рецепт, который я приготовил для перенаправления всей исходящей электронной почты на один (локальный) адрес:

/ etc / postfix / main.cf : (добавить это в существующий файл, не заменять все)

virtual_alias_maps = regexp:/etc/postfix/virtual

/ etc / postfix / virtual :

/.*/ duskwuff@localhost
0 голосов
/ 10 февраля 2012

Вы можете настроить свой почтовый сервер так, чтобы он принимал SMTP-сообщения в обычном режиме, но не мог перенаправлять их на другой почтовый сервер.Если ваш почтовый сервер поддерживает его, сделайте так, чтобы он перенаправлял все сообщения на учетную запись postmaster или любой другой адрес по вашему выбору.

Это означает, что PHP будет вести себя как обычно, все будет работать сразу же с сообщением, но это просто не пойдет к «предполагаемому» получателю.

Это также означает, что вы можете проверять заголовки (почти так, как они обычно выглядят), чтобы поддерживать отладку.

0 голосов
/ 10 февраля 2012

Я не думаю, что вы сможете сделать что-то подобное.Почта отправляется почтовым сервером, поэтому ваш почтовый сервер должен записывать их в файл, а не отправлять.

Почему бы просто не отправить его на специальную электронную почту для разработчиков?

Пример:

define('DEBUG', true);

if(DEBUG)
{
    // Override recipient
    $recipient = 'development@domain.tld';
}

// Send mail...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...