PHP에서 mail() 함수 동작 테스트, Zeroboard 수정사항
MYDN2008. 5. 21. 14:01
PHP 에서 mail 함수 정상 동작하는지 확인하는 소스
test.php 로 저장하여,
웹페이지에서 로드했을때
mail success 가 찍혀야 정상
만약, 위 소소에서 mail success 가 찍히는데
각종 커스텀 보드에서 메일 발송이 되지 않는다면,
php소스에서 mail 함수의 각 인자들을 확인해본다.
error_log($mailto, 0); // mailto 변수를 서버의 에러로그에 찍는다.
error_log($subject, 0);
가령,
Apache 서버를 구동중이라면,
Apache\logs\error.log
파일에 mailto 변수의 내용이 찍힌다.
지금 내가 사용중인 환경은
Apache2.2.8 + SMTP(W2K3 R2) + PHP5.2.5
위와 같이 테스트에서 이상이 없었으나,
제로보드에서는 메일을 보내지 못하는 현상이 발생한다.
따라서,
제로보드의 메일발송 소스를 확인해보니,
받는 사람(Receiptor) 변수에
위의 예제에서는 "sample@a.com" 이지만,
제로보드는 "받는사람 이름 <sample@a.com>"을 설정한다.
Receiptor 변수를 임의로 "sample@a.com"으로 수정하고
정상 작동하는 것을 확인
해당 소스를 수정해주었다.
제로보드\classes\mail\Mail.class.php
수정이후 정상 발송 확인
끝~!
<?php
//$mailto="받는주소";
$mailto="sample@a.com";
$subject="mail test";
$content="test";
$result=mail($mailto, $subject, $content);
if($result){
echo "mail success";
}else {
echo "mail fail";
}
?>
//$mailto="받는주소";
$mailto="sample@a.com";
$subject="mail test";
$content="test";
$result=mail($mailto, $subject, $content);
if($result){
echo "mail success";
}else {
echo "mail fail";
}
?>
test.php 로 저장하여,
웹페이지에서 로드했을때
mail success 가 찍혀야 정상
만약, 위 소소에서 mail success 가 찍히는데
각종 커스텀 보드에서 메일 발송이 되지 않는다면,
php소스에서 mail 함수의 각 인자들을 확인해본다.
error_log($mailto, 0); // mailto 변수를 서버의 에러로그에 찍는다.
error_log($subject, 0);
가령,
<?php
//$mailto="받는주소";
$mailto="sample@a.com";
$subject="mail test";
$content="test";
$result=mail($mailto, $subject, $content);
if($result){
echo "mail success";
}else {
error_log($mailto, 0);
echo "mail fail";
}
?>
일 경우,//$mailto="받는주소";
$mailto="sample@a.com";
$subject="mail test";
$content="test";
$result=mail($mailto, $subject, $content);
if($result){
echo "mail success";
}else {
error_log($mailto, 0);
echo "mail fail";
}
?>
Apache 서버를 구동중이라면,
Apache\logs\error.log
파일에 mailto 변수의 내용이 찍힌다.
지금 내가 사용중인 환경은
Apache2.2.8 + SMTP(W2K3 R2) + PHP5.2.5
위와 같이 테스트에서 이상이 없었으나,
제로보드에서는 메일을 보내지 못하는 현상이 발생한다.
따라서,
제로보드의 메일발송 소스를 확인해보니,
받는 사람(Receiptor) 변수에
위의 예제에서는 "sample@a.com" 이지만,
제로보드는 "받는사람 이름 <sample@a.com>"을 설정한다.
Receiptor 변수를 임의로 "sample@a.com"으로 수정하고
정상 작동하는 것을 확인
해당 소스를 수정해주었다.
제로보드\classes\mail\Mail.class.php
function getReceiptor() {
//if($this->receiptor_name) return sprintf("%s <%s>", '=?utf-8?b?'.base64_encode($this->receiptor_name).'?=', $this->receiptor_email);
return $this->receiptor_email;
}
//if($this->receiptor_name) return sprintf("%s <%s>", '=?utf-8?b?'.base64_encode($this->receiptor_name).'?=', $this->receiptor_email);
return $this->receiptor_email;
}
수정이후 정상 발송 확인
끝~!