많은 이메일 알림을 보내는 시스템에서 작동하는 램프 환경에 있습니다. 내 개발 환경에서 PHP가 실제 이메일을 보내지 못하게하는 방법을 원합니다. 지금은 모든 mail() 줄을 주석으로 처리하고 있지만 주석 처리 된 줄을 제거하고 테스터에게 밀어 넣기 때문에 QA 사람들과 혼란을 일으키기 시작합니다.개발 환경을위한 PHP 센드 메일 비활성화하기
간단한 방법으로 오류가 발생하지 않고 PHP에서 sendmail을 비활성화 할 수 있습니까?
많은 이메일 알림을 보내는 시스템에서 작동하는 램프 환경에 있습니다. 내 개발 환경에서 PHP가 실제 이메일을 보내지 못하게하는 방법을 원합니다. 지금은 모든 mail() 줄을 주석으로 처리하고 있지만 주석 처리 된 줄을 제거하고 테스터에게 밀어 넣기 때문에 QA 사람들과 혼란을 일으키기 시작합니다.개발 환경을위한 PHP 센드 메일 비활성화하기
간단한 방법으로 오류가 발생하지 않고 PHP에서 sendmail을 비활성화 할 수 있습니까?
왜 해달라고 그냥 같은 Mailerclass를 사용
class MyMailer {
private static $is_development_state = true;
public static function mail(...) {
if (self::$is_development_state) {
...
}
}
}
내 말은 : MyMailer 메일을 리팩토링 :: 메일이 당신을 위해 모든 IDE를 할 수 있습니다)
이 문제에 대한 다른 솔루션을 설치하는 것입니다 현지 배달에 대한 지역 우편 번호. 모든 이메일은 귀하의 지역 이메일 계정으로 전송됩니다!
https://serverfault.com/questions/137591/postifx-disable-local-delivery
또한 당신은 PHP에서 override_function 방법을 사용을 시도 할 수 있습니다 : 그것은 당신이 더미 함수에 메일() 함수를 저하 할 수 있습니다
http://php.net/manual/en/function.override-function.php
. 그렇게하면 아무 일도 일어나지 않지만 프로덕션 환경에 대한 override_function에 주석을 달면 프로덕션 환경에서 코드가 계속 작동합니다.
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