Windows에서 Apache 서버(2.2.14)를 설정하고 기존 XAMPP 구성에서 아이디어를 차용하고 있습니다. 지금은 PHP(5.3.1)용 이메일 기능을 설정하려고 합니다. (XAMPP 서버처럼 첨부 파일을 처리할 수 있어야 합니다.)
XAMPP가 다음과 함께 제공되는 것으로 나타났습니다.Windows용 가짜 Sendmail, 그러나 구성에 관한 몇 가지 사항이 이해가 되지 않습니다.
다음은 XAMPP의 몇 줄입니다 php.ini
.
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path = "C:\xampp\sendmail\sendmail.exe -t"
이것은 다음과 같은 이유로 이상합니다.
- 명시적으로 "Unix 전용"이라고 되어 있지만
- Windows에서 이 줄을 사용하라는 튜토리얼이 계속 표시됩니다.
- 예제 파일 경로는 Unix에서는 의미가 없습니다.
sendmail_path
기본적으로 주석 처리되어 있습니다.
sendmail.exe
꼭 필요한지 궁금했습니다 . 따라서 가 없는 사용자 정의 Apache 서버에서 , 및 에 대한 올바른 정보를 추가하도록 sendmail.exe
편집했습니다 . 이로써 메일을 보낼 수 있게 되었습니다! 하지만 매우 느립니다.php.ini
SMTP
smtp_port
sendmail_from
그런 다음 XAMPP 서버로 돌아가서 sendmail
sendmail을 비활성화하기 위해 디렉터리 이름을 변경했습니다. 그런 종류의 작업이 수행되었습니다. 내 PHP 스크립트가 전송되었다고 주장했지만 아무 일도 일어나지 않았습니다.
그래서 나는 매우 혼란스러워요.
- 내 XAMPP 서버가
sendmail_path
주석 처리되었지만 가리키는 프로그램을 여전히 사용하고 있는 것 같습니다. 어떻게 알 수 있나요? - 내 Apache 서버에는 에 아무것도 없지만
sendmail_path
그것 없이도 어떻게든 메일을 보낼 수 있습니다. 어떻게 그렇게 합니까?
이메일을 보내도록 Apache 서버를 구성하려면 실제로 무엇을 해야 합니까?
답변1
추가 검색 및 테스트 결과 다음과 같은 것으로 나타났습니다.
Windows에서는 PHP의 mail() 함수가 이메일을 같은 컴퓨터의 다른 프로그램으로 전달할 필요가 없습니다. 자체적으로 메일 서버에 연결할 수 있습니다
그러나 이는 비효율적이고 느리다.
설정가짜 센드메일서버 시스템에서 의 지시어를 지정하면
php.ini
이메일sendmail_path
전송 속도가 훨씬 빨라집니다. 개인적으로 나는sendmail.exe
데이터를 훌륭하고 소화하기 쉬운 조각으로 씹어서 어미새가 아기에게 먹이를 주듯이 메일 서버의 입에 침을 뱉는 것을 상상합니다 . 음! 하지만 어쩌면 내가 미쳤을 수도 있습니다.sendmail.exe
에 넣으면C:\usr\bin
Unix 기반 OS에서 실행될 것으로 예상되는 일부 프로그램이 Windows에서도 실행될 수 있습니다.
여기는PHP 매뉴얼의 일부 정보그게 내가 이 문제를 해결하는 데 도움이 됐어요.
참고: Windows의 mail() 구현은 Unix 구현과 여러 면에서 다릅니다. 첫째, 메시지 작성에 로컬 바이너리를 사용하지 않고 직접 소켓에서만 작동합니다. 즉, MTA가 네트워크 소켓(로컬 호스트 또는 원격 시스템에 있을 수 있음)에서 수신 대기해야 함을 의미합니다.
그리고...
참고: mail() 함수는 루프에서 더 많은 양의 이메일에 적합하지 않다는 점에 주목할 가치가 있습니다. 이 기능은 각 이메일에 대해 SMTP 소켓을 열고 닫는 데 이는 그다지 효율적이지 않습니다. 대량의 이메일 전송에 대해서는 » PEAR::Mail 및 » PEAR::Mail_Queue 패키지를 참조하세요.
답변2
Apache는 실제로 이메일 전송 구성에 관여하지 않습니다. 이는 PHP와 이 경우 로컬 MTA에 의해 완전히 처리됩니다. MTA는 거의 항상 Sendmail 또는 Postfix입니다. 이에 대한 구성은 sendmail_path라는 [mail function] 섹션 아래 php.ini 파일에 있습니다.