2011-08-10 12 views
0

주어진 주소로 전자 메일을 보내는 매우 간단한 PHP 코드를 작성하려고합니다.PHP로 전자 메일 보내기

I have this code: 
<?php 
mail('[email protected]','Test','Test OK'); 
echo 'Message sent!'; 
?> 

대신 '[email protected]' 나는 내 자신의 전자 메일을 사용했습니다.

나는 Snow Leopard로 Mac을 실행하기 때문에 foundationphp에 지정된 지침을 사용하여 PHP를 활성화했습니다.

"메시지를 보냈기 때문에 PHP가 작동하는 것 같습니다!" 에코, 그러나 나는 어떤 이메일도받지 못하고있다.

왜 이런 생각입니까? 내가 도대체 ​​뭘 잘못하고있는 겁니까?

미리 감사드립니다.

+0

메일이 먼저 false를 반환하는지 확인하십시오. 실제 오류를 찾으려면 시스템 로그 (보통 SendMail을 사용하는 경우 Linux에서/var/log/messages)를 확인하십시오. 또한 오류보고가 php.ini에서 E_ALL로 설정되어 오류를 볼 수 있도록하십시오. – bcoughlan

+0

Sendmail은'messages'가 아닌'/ var/log/maillog'에 일반적으로 로그합니까? 우리는 이것이 Linux가 아니라는 것을 알고 있습니다. OS X입니다. –

+1

smtp 서버를 설치 및 구성하지 않았을 수 있습니다. Gmail 계정이있는 경우 Gmail에서 smtp를 사용하는이 코드 (http://stackoverflow.com/questions/712392/send-email-using-gmail-smtp-server-from-php-page/2748837#2748837)를 사용해보십시오. 그게 사실인지보십시오. –

답변

5

우선 반환 값 mail을 확인하지 않은 경우 "보낸 메시지"가 표시됩니다. 거짓으로 돌아온 경우에도 마찬가지입니다. 심지어 mail 경우는 true를 돌려

if (mail('[email protected]','Test','Test OK')) { 
    echo 'Message sent!'; 
} 

둘째, 그 그냥 메일이 목적지에 도달하지하는 MTA에 메일을 건네 의미한다. PHP가 메일을 성공적으로 전달하는 경우, PHP 코드/구성에 문제가 없으므로 메일 로그를보고 디버그해야합니다.

2

로컬 컴퓨터에서이 프로그램을 실행하는 경우 전자 메일이 어느 곳으로도 이동하지 않을 가능성이 있습니다. PHP의 mail 함수는 올바른 발신 메일 연결을 가지고 있는지 여부를 알지 못합니다. 메일이 로컬 대기열에 성공적으로 입력되었는지 여부 만 알고 있습니다.

메일이 배달을 위해 수락 되었기 때문에 메일이 의도 한 목적지에 실제로 도달한다는 것을 의미하지는 않습니다. - http://php.net/mail

비 서버 컴퓨터의 경우 가장 일반적으로는 원격 SMTP 서버 (일반적으로 ISP에서 제공)를 설정하는 것이 좋습니다. http://email.about.com/od/emailprogrammingtips/qt/Configure_PHP_to_Use_a_Remote_SMTP_Server_for_Sending_Mail.htm

+0

로컬 컴퓨터에서 실행 중입니다. 나는 이것이 실제 문제라고 생각한다. SMTP 서버를 구성하려고합니다. 감사! –

1

"메시지를 보냈습니다!" mail()이 성공했는지 묻지 않았으므로 :

if (mail(...)) 
{ 
    echo 'Message sent!'; 
} 
else 
{ 
    echo "Fail!"; 
} 

그러면 올바른 피드백을 줄 수 있습니다.