2016-09-09 7 views
0

모든 것이 올바르게 작동하는 것으로 보이고 프런트 엔드 또는 네트워크에서 오류가 발생하지 않습니다.

그러나 코드를 테스트 할 때 $ to 계정에 대한 전자 메일을받지 못합니다.

질문 어떻게 아래의 코드가 이렇게 이메일이 전송 및 수신 변경할 수 있습니다.

여기 내 코드입니다.

<?php 

$to = '[email protected]'; // Change your email address 

$name = $_POST['name']; 
$subject = $_POST['subject']; 
$email = $_POST['email']; 
$message = $_POST['message']; 

// Email Submit 
// Note: filter_var() requires PHP >= 5.2.0 
if (isset($email) && isset($name) && isset($subject) && isset($message) && 
    filter_var($email, FILTER_VALIDATE_EMAIL)) { 

    // detect & prevent header injections 
    $test = "/(content-type|bcc:|cc:|to:)/i"; 
    foreach ($_POST as $key => $val) { 
    if (preg_match($test, $val)) { 
     exit; 
    } 
    } 

$body = <<<EMAIL 
subject : $subject 

My name is, $name. 

$message 

From : $name 
Email : $email 

EMAIL; 

$header = 'From: ' . $_POST["name"] . '<' . $_POST["email"] . '>' . "\r\n" . 
    'Reply-To: ' . $_POST["email"] . "\r\n" . 
    'X-Mailer: PHP/' . phpversion(); 

// mail($to , $_POST['subject'], $_POST['message'], $headers); 
mail($to, $subject, $body, $header); 
} 
?> 

저는 실제 오류가 발생하지 않고 아무 것도 울리지 않으므로 크기가 작다고 생각합니다. 이것은 PHP로 작업 한 첫 번째 시간 중 일부입니다. 그래서 나는 더 큰 무언가를 놓치고 있습니다.

+0

정확히 문제가 무엇입니까? –

+0

테스트 할 때 $ to 계정에 대한 이메일을받지 못했습니다. –

+0

'sendmail'을 설치 했습니까? PHP 메일()은 'sendmail'을 설치해야합니다 (http://php.net/manual/en/mail.requirements.php에 따라) 설치 프로세스는 다음과 유사해야합니다. https : // www. abeautifulsite.net/configuring-sendmail-on-ubuntu-1404 – kdvy

답변

0

문제는 로컬 환경에서 스크립트를 테스트하고있는 것일 수 있습니다. 실제 서버에서 테스트 해보아야합니다.

어쨌든 이런 일에 스크립트를 변경, 변수를 저장하고 나는 히어 닥 구문을 드롭 할 때 당신에게 내가 게시물을 필터링 할 몇 가지 조언을 줄 수있는 경우 :

<?php 

//this is tested, it should work (on a live server) 

$to = '[email protected]'; // Change it to your email address 

$name = filter_var(trim($_POST['name']), FILTER_SANITIZE_STRING); 
$subject = filter_var(trim($_POST['subject']), FILTER_SANITIZE_STRING); 
$email = filter_var(trim($_POST['email']), FILTER_VALIDATE_EMAIL); 
$message = filter_var(trim($_POST['message']), FILTER_SANITIZE_STRING); 

if ($email && isset($name) && isset($subject) && isset($message)) 
{ 

    $body = 'Subject : ' . $subject . "\r\n"; 
    $body .= 'My name is, ' . $name . ".\r\n"; 
    $body .= $message . "\r\n"; 
    $body .= 'From : ' . $name . "\r\n"; 
    $body .= 'Email : ' . $email . "\r\n"; 

    // If you want to send html mail add this, if you delete this pay attention to string concatenation 
    $headers = 'MIME-Version: 1.0' . "\r\n"; 
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 

    // Additional headers 
    $headers .= 'To: Me <'.$to.'>' . "\r\n"; 
    $headers .= 'From: '.$name.' <'.$email.'>' . "\r\n"; 
    // Since replies are sent to the same address in the "from" field is useless to set the "reply-to" header 

    mail($to, $subject, $body, $headers); 

} 
else 
{ 
    echo ('Error: unable to send mail.'); 
} 

?>