2008-09-02 4 views
2
나는이 문제군요

:이 스크립트에서PHP 메일() 작동하지 윈도우 2003, IIS SMTP

PHP Warning: mail() [function.mail]: SMTP server response: 550 5.7.1 Unable to relay for [email protected] in c:\inetpub\wwwroot\mailtest.php on line 12 

: 서버의 php.ini 파일에서

<?php 
$to = "[email protected]"; 
$subject = "test"; 
$body = "this is a test"; 

if (mail($to, $subject, $body)){ 
    echo "mail sent"; 
} 
else { 
    echo "problem"; 
} 
?> 

섹션

[mail function] 
; For Win32 only. 
SMTP = server.domain.com; for Win32 only 
smtp_port = 25 

; For Win32 only. 
sendmail_from = [email protected] 
; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). 
;sendmail_path = 

("서버"및 "도메인"은 실제 서버 및 도메인 이름을 정확하게 나타냅니다)

IIS에서 SMTP가 실행 중입니다. "Access" 탭에서 컴퓨터가이 가상 서버를 통해 릴레이 할 "Relay" 버튼, 선택은 checkbox "only the list below"로 설정하고 서버가 Windows Server 2003 Service Pack 2를 실행 "127.0.0.1(xxx.xxx.xxx.xxx)" (x's representing actual server IP address).

목록에 나는 그것이 가정 완전히 오후 5시 9 월 1 일 2008 년으로 패치입니다 IIS7 (확인하는 방법?)을 실행 중입니다.

아이디어가 있으십니까?

응답 시간이 Espo 인 경우 :이 컴퓨터는 데이터 센터에서 호스팅됩니다. 우리는 gmail 계정을 사용하고 싶지 않습니다. Windows server 2003은 자체 SMTP 서버와 함께 제공됩니다.

업데이트 : Yaakov Ellis의 조언에 따라 모든 릴레이 제한을 삭제하고 제공된 IP 주소 버튼을 사용하여 허용 된 목록에 서버 IP를 추가 했으므로 작동이 시작되었습니다.

나를 도와 주신 Espo와 Yaakov에게 감사드립니다.

답변

4

SMTP 서버의 중계에 대한 IP 제한을 제거하고 모든 릴레이로여십시오. 이것이 설정되었을 때 작동하면 문제는 원래의 제한 사항과 관련이 있다는 것을 알고 있습니다. 이 경우 DNS 문제이거나 잘못된 IP 주소가 나열된 것일 수 있습니다.

1

잘못된 SMTP 서버를 사용하고 있습니다. Gmail 계정으로 만 이메일을 보내려는 경우 내 대답 here을 살펴보십시오.

다른 계정으로 이메일을 보내야하는 경우 ISP에 SMTP 세부 정보를 요청하십시오.

편집 : 사람들이 메일 대기열을 모니터링하고 공격을 확인하며 메일 소프트웨어를 업데이트해야하므로 ISP SMTP 서버를 사용하는 것이 항상 더 바람직하다고 생각합니다. 비즈니스에서 웹 응용 프로그램을 개발하는 경우 거의 항상 수행하는 업무에 충실하고 다른 사람들이 자신의 작업 (예 : 메일 서버 실행)을 수행하도록하는 것이 가장 좋습니다.

여전히 로컬 SMTP 서버를 사용하려는 경우, 제일 먼저 PHP 부분을 배제하는 것입니다. 다음을 시도해보십시오 KB153119 그리고 SMTPServer IISlog에서 오류를 확인하십시오.

EDIT2 : KB 기사에 Exchange 용이지만 다른 SMTP 서버 (IIS 포함)에도 동일한 명령이 사용되므로이 예제를 사용하여 메일을 보낼 수 있는지 확인하십시오. 조.

0

@Espo : KB153119를 다시 작성하겠습니다. 감사.

메일 서버 정보 : 듣습니다.

내가 더 밝힐 때 업데이트하겠습니다.

0

@Espo, 해당 문서는 IIS7.0 SMTP 서버가 아닌 Exchange 서버와 관련이 있습니다.

요약 :이 문서에서는 SMTP 통신 문제를 해결하기 위해 SMTP (Simple Mail Transfer Protocol) 서비스를 실행하는 컴퓨터에서 포트 25로 텔넷을 보내는 방법을 설명합니다. 이 문서의 정보는 오류 메시지를 포함하여 Microsoft Exchange 기반 서버와의 SMTP 통신 문제를 해결할 때 발생하는 문제에만 적용되며 일반적인 문제 해결을 목적으로하지 않습니다.

0

iis6 2003 서버에서도 동일한 문제가 발생했습니다. php는 mail()을 사용할 때 항상 실패했습니다. 나는 Relay Restrictions를 '아래 목록 만'(기본적으로 비어 있음)에서 '아래의 목록을 제외한 모두'로 변경하여 PHP에서 메일을 수락하도록했습니다. 릴레이 제한은 smtp servers 속성 화면의 액세스 탭에서 찾을 수 있습니다. 물론 서버가 인터넷에 연결되어 있다면 이러한 중계 제한에 대해 더 분별력이 있어야합니다. 그러나 제 경우에는 dev 상자의 가상 서버에 있습니다.

희망이 도움이됩니다.