2012-03-09 4 views
4

많은 이메일 알림을 보내는 시스템에서 작동하는 램프 환경에 있습니다. 내 개발 환경에서 PHP가 실제 이메일을 보내지 못하게하는 방법을 원합니다. 지금은 모든 mail() 줄을 주석으로 처리하고 있지만 주석 처리 된 줄을 제거하고 테스터에게 밀어 넣기 때문에 QA 사람들과 혼란을 일으키기 시작합니다.개발 환경을위한 PHP 센드 메일 비활성화하기

간단한 방법으로 오류가 발생하지 않고 PHP에서 sendmail을 비활성화 할 수 있습니까?

답변

1

왜 해달라고 그냥 같은 Mailerclass를 사용

class MyMailer { 
    private static $is_development_state = true; 
    public static function mail(...) { 
     if (self::$is_development_state) { 
      ... 
     } 
    } 
} 

내 말은 : MyMailer 메일을 리팩토링 :: 메일이 당신을 위해 모든 IDE를 할 수 있습니다)

2

Fakemail 또는 smtp4dev (Windows 전용 마지막)이 도구를 사용하면 전송 코드와 테스트 메일을 수정할 수에서.

1

또한 당신은 PHP에서 override_function 방법을 사용을 시도 할 수 있습니다 : 그것은 당신이 더미 함수에 메일() 함수를 저하 할 수 있습니다

http://php.net/manual/en/function.override-function.php

. 그렇게하면 아무 일도 일어나지 않지만 프로덕션 환경에 대한 override_function에 주석을 달면 프로덕션 환경에서 코드가 계속 작동합니다.

3
또한 var/log/mails로 메일을 작성하는 기술 here 같은 작은 PHP 스크립트를 설정할 수

: 선을,

#!/usr/bin/php 
<?php 
$input = file_get_contents('php://stdin'); 
preg_match('|^To: (.*)|', $input, $matches); 
$filename = tempnam('/var/log/mails', $matches[1] . '.'); 
file_put_contents($filename, $input); 

/usr/local/bin/sendmail에 스크립트를 넣어 그것을 실행하고 넣어

sendmail_path = /usr/local/bin/sendmail 

귀하의 php.ini

관련 문제