-1

私はPHPの初心者で、簡単な連絡フォームをプログラムしようとしました。私の質問は:私のコードの何が問題なのですか?フォーマットなどの間違いを見つけることができないようです...これは私のコードです:

contact.php:

    ...page content...
    <div class="contact">              
            <form action="send_mail.php" method="post">
             <fieldset>
                  <label for="name">Name:</label>
                  <input type="text" name="name" placeholder="Enter your name" />   
                  <label for="email">Email:</label>
                  <input type="email" name="email" placeholder="Enter your email address" />        
              <label for="message">Message:</label>
              <textarea name="message" placeholder="What's on your mind?"></textarea>
              <br>
              <input type="submit" name="submit" value="Send message" />

             </fieldset>
              </form>
</div>

...page content...

send_mail.php:

<?php
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $from = 'From: My website'; 
    $to = 'someone@email.cz'; 
    $subject = 'My contact form message';

    $body = "From: $name\n E-Mail: $email\n Message:\n $message";

    if ($_POST['submit']) {              
         if (mail ($to, $subject, $body, $from)) { 
             echo '<p>Your message has been sent!</p>';
           } else {                                            
             echo '<p>Something went wrong, go back and try again!</p>'; 
           } 
    }
?>

「何か問題が発生しました」というメッセージが表示されます。これは、taht mail()がfalseを返したことを意味しますが、理由はわかりません。助けてくれてありがとう!

4

3 に答える 3

2

これは、ローカルコンピューターでスクリプトを実行する際の一般的な問題です。ほとんどのコンピューターには電子メールサーバーがなく、そのサーバーから電子メールを送信するように構成されています。

PHPメール機能を使用するには、コンピューターに電子メールサーバーが設定されている必要があります。電子メールサポートを使用したオンラインホスティングを確認するか、ローカルテストの場合はテストメールサーバーをインストールします。

最後に、Mac以外のOSについて少し説明します。私は過去にこれでいくらかの運がありました。

Windowsを使用している場合は、おそらくこれが優れています:http: //www.toolheap.com/test-mail-server-tool/

于 2013-03-21T13:55:58.143 に答える
2

ヘッダーには適切なヘッダーが含まれている必要があります。
使用するのFrom: My websiteはスパムに行くことだけです。
電子メールを使用する=>From: $email\r\nはよりよく機能します。

これを試して、テストしてください。

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$headers = "From: $email\r\n";
$to = 'your_email@somewhere.com'; 
$subject = 'My contact form message';
$body = "From: $name\n E-Mail: $email\n Message:\n $message";

if(empty($email)) {
die("Something went wrong, go back and try again!"); 
}
elseif (isset($_POST['email'])) {
mail($to,$email,$body,$headers);
echo "<p>Your message has been sent!</p>";
} 
?>
于 2013-03-21T14:36:19.083 に答える
1

1。このコードを機能させるには、任意のドメインからメールを送信する必要があります。

for example: you should have a live website thru that domain email id only send mail to
others 

2。メールの送信にはPHP-MAILERコーディングを使用します。ネットからダウンロードして変更を加えて使用するだけです。

于 2013-03-21T15:21:43.560 に答える