Apache에서 이메일을 보내도록 PHP를 어떻게 설정합니까? (윈도우)

Apache에서 이메일을 보내도록 PHP를 어떻게 설정합니까? (윈도우)

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.iniSMTPsmtp_portsendmail_from

그런 다음 XAMPP 서버로 돌아가서 sendmailsendmail을 비활성화하기 위해 디렉터리 이름을 변경했습니다. 그런 종류의 작업이 수행되었습니다. 내 PHP 스크립트가 전송되었다고 주장했지만 아무 일도 일어나지 않았습니다.

그래서 나는 매우 혼란스러워요.

  • 내 XAMPP 서버가 sendmail_path주석 처리되었지만 가리키는 프로그램을 여전히 사용하고 있는 것 같습니다. 어떻게 알 수 있나요?
  • 내 Apache 서버에는 에 아무것도 없지만 sendmail_path그것 없이도 어떻게든 메일을 보낼 수 있습니다. 어떻게 그렇게 합니까?

이메일을 보내도록 Apache 서버를 구성하려면 실제로 무엇을 해야 합니까?

답변1

추가 검색 및 테스트 결과 다음과 같은 것으로 나타났습니다.

  1. Windows에서는 PHP의 mail() 함수가 이메일을 같은 컴퓨터의 다른 프로그램으로 전달할 필요가 없습니다. 자체적으로 메일 서버에 연결할 수 있습니다

  2. 그러나 이는 비효율적이고 느리다.

  3. 설정가짜 센드메일서버 시스템에서 의 지시어를 지정하면 php.ini이메일 sendmail_path전송 속도가 훨씬 빨라집니다. 개인적으로 나는 sendmail.exe데이터를 훌륭하고 소화하기 쉬운 조각으로 씹어서 어미새가 아기에게 먹이를 주듯이 메일 서버의 입에 침을 뱉는 것을 상상합니다 . 음! 하지만 어쩌면 내가 미쳤을 수도 있습니다.

  4. sendmail.exe에 넣으면 C:\usr\binUnix 기반 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 파일에 있습니다.

관련 정보