[소개] PHP에서 메일 기능인 mail()을 사용하려면 메일 시스템을 설치하고 실행해야 합니다. 사용되는 메일 시스템 프로그램은 php.ini 파일에 설정되어 있습니다.
다음 코드를 사용하여 이메일을 보내지만 항상 전송이 실패합니다.
[php] view plaincopyprint?
01.02.$to = "xxxxxxxx@qq.com"
03.$subject = "테스트 mail";
04.$message = "안녕하세요! 간단한 이메일 메시지입니다.";
05.mail($to,$subject,$message);
06.?>
조사 결과, PHP에서 메일 기능 mail()을 사용할 수 있도록 하려면 메일 시스템이 설치되어 실행 중이어야 합니다. 사용되는 메일 시스템 프로그램은 php.ini 파일에 설정되어 있습니다. 구체적인 해결 방법은 다음과 같습니다.
1. sendmail 설치
sudo apt-get install sendmail
sudo apt-get install sendmail-cf
sudo apt-get install mailutils
2.
/etc/mail/sendmail.mc를 열고 다음 줄을 찾으세요:
DAEMON_OPTIONS('Family=inet, Name=MTA-v4, Port=smtp, Addr=127.0.0.1')dnl
변경 127.0.0.1 0.0.0.0으로 변경
다음 명령을 실행하여 이전 구성 파일을 백업하고 새 구성 파일을 생성합니다:
cd /etc/mail
mv sendmail.cf sendmail.cf~
m4 sendmail.mc > ; sendmail.cf
3. Test
echo "테스트 메일입니다." | mail -s "test" xxxxxxxx@qq.com
참고: 이 이메일은 수신됩니다. 또한, 163 메일함을 이용하시면 바로 필터링되어 수신이 불가능할 수 있습니다.
4. php.ini 파일 구성
/etc/php5/apache2/php.ini를 열고 다음 줄을 찾습니다.
; sendmail_path =
줄을 다음으로 변경합니다. sendmail_path = /usr/ sbin /sendmail -t
여기서 특별히 주의해야 할 점은 "-t" 매개변수가 필수라는 점입니다. 이 매개변수가 누락되면 원본 PHP 파일이 실행될 때 mail() 함수가 실행되지 않습니다. 브라우저에서는 서버에서 직접 php 명령줄을 사용하여 원본 php 파일을 실행하면 문제가 없습니다.
5. 아파치 재시작
sudo /etc/init.d/apache2 restart
이때 원래 php 코드가 다시 실행되어 이메일이 성공적으로 전송됩니다. .
위 내용은 PHP가 메일 기능을 사용하여 이메일을 보낼 수 없는 이유를 관련 내용을 포함하여 소개하고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.