- Post in | WebDevelop/PHP
- Post at | 2008. 6. 15. 00:26 | by 쥬리엘
윈도우 APM 환경에서 mail() 함수 사용
리눅스에서의 sendmail 이 윈도우에서는 불가능 하다는겁니다.
이는 PHP에서 mail() 함수가 작동하지 않는 다는걸 의미합니다.
검색결과 윈도우에서는 EMWAC 라는 공짜 메일서버를 설치하거나
유료 솔루션을 구입해야 한다는 답변들이 많았습니다.
EMWAC의 경우에는 설치를 완료하고 설정을 이리 저리 만져 보았으나
서비스의 실행만 성공적으로 이루어지고 마지막 단계의 telnet localhost 25 를 아무리 해도
접속이 되지 않는 문제로 인해 다른 대안을 생각하게 되었습니다.
제가 찾아낸 훌륭한 대안은 "fake sendmail for windows" 였습니다.
리눅스의 sendmail 을 윈도우에서 흉내낸것입니다.(하지만 외부 smtp 서버 주소가 필요합니다.)
예전에는 SSL/TLS 보안에 대해 지원을 하지 않았지만 최근에는 지원을 하기 때문에
gmail 의 SMTP 를 사용할수 있다는 장점이 있습니다.
gmail의 SMTP 의 경우에는 TLS 보안인증을 사용하기 때문에
사이트에서 sendmail-SSL 파일을 추가로 받아서 압축을 풀어준후에
sendmail.exe 와 같은 폴더에 복사해주면 됩니다.
세팅 정보는 아래와 같습니다.
c:\windows\php.ini 파일을 열어서 아래와 같은 부분을 수정합니다.
sendmail_path = d:\sendmail -t
여기서 원래는 sendmail -t 이지만 위 사이트에서 받은 sendmail.exe 파일의 경로를 입력합니다.
마지막에 .exe 는 제거합니다.
sendmail.exe 와 같은 폴더에 위치한 sendmail.ini 를 열어 아래와 같이 수정합니다
아래는 gmail 의 세팅입니다 ^^ 참고하세요
smtp_server=smtp.gmail.com
smtp_port=587
auth_username=아이디@gmail.com
auth_password=비밀번호
force_sender=아이디@gmail.com
여기서 이상한점이 force_sender 를 지정하지 않으면 sender email 을 지정하지 않았다고 계속 오류를 뱉어낸다는겁니다. php 에서 mail함수에서 sender email 을 주어도 본문으로 들어가버리더라구요. 제가 php 를 많이 다뤄보지 않아서 정확한 이유는 모르겠습니다.
또하나 smtp_port 번호가 gmail 에서 말하기로는 465 또는 587이라고 하는데
465를 사용할경우에는 응답없음으로 나오면서 소켓 에러가 발생합니다.
위와같이 세팅을 하고 php의 mail 함수를 이용해보면 아주 잘 작동합니다 ^^
출처 : http://seapy.com/112
'WebDevelop > PHP' 카테고리의 다른 글
Window APM + curl 연동 (0) | 2008.06.27 |
---|---|
php 소스 보여주기 (0) | 2008.02.15 |
재사용성을 높인 PHP 프레임워크 (0) | 2007.12.17 |