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.'); 
} 

?> 
関連する問題