2017-02-14 10 views
0

私はSwiftmailerを使用してフォームを作成しています。問題は、フォームの中に何もないが、PHPの本文が電子メールに表示されることである。私はYoutubeとGoogleからいくつかのチュートリアルも見てきましたが、それらを試しましたが、失敗しました。フォームからのコンテンツはウェブメールに送信されません

HTML

<form id="contactForm" method="POST" action="form-process.php"> 
      <div class="row"> 
       <div class="form-group col-md-6"> 
        <label class="h4">Your Name</label> 
        <input type="text" class="form-control" id="name" placeholder="Enter name" required data-error="NEW ERROR MESSAGE"> 
        <div class="help-block"></div> 
       </div> 
       <div class="form-group col-md-6"> 
        <label class="h4">Your Email</label> 
        <input type="text" class="form-control" id="email" placeholder="Enter name" required> 
        <div class="help-block"></div> 
       </div> 
      </div> 
      <div class="form-group"> 
        <label class="h4">Your Message</label> 
        <textarea id="message" class="form-control" rows="5" placeholder="Enter your message" required></textarea> 
        <div class="help-block"></div> 
       </div> 
       <button type="submit" id="form-submit" class="btn btn-success btn-lg pull-right ">Submit</button> 
     <div id="msgSubmit" class="h3 text-center hidden"></div> 
     <div class="clearfix"></div> 
     </form> 

PHP

<?php 

require_once 'swiftmailer-5.x/lib/swift_required.php'; 

// Create the Transport 
$transport = Swift_SmtpTransport::newInstance('mail.mysite.com', 465, 'ssl') 
    ->setUsername('[email protected]') 
    ->setPassword('password') 
    ; 

// Get data 

$name=filter_var($_POST['name'], FILTER_SANITIZE_STRING); 
$email=filter_var($_POST['email'], FILTER_SANITIZE_EMAIL); 
$message=filter_var($_POST['message'], FILTER_SANITIZE_STRING); 

$data = "Name: " . $name . "<br />" . 
     "Email: " . $email . "<br />" . 
     "Message: " . $message . "<br />"; 

// Create the Mailer using your created Transport 
$mailer = Swift_Mailer::newInstance($transport); 

// Create a message 
$message = Swift_Message::newInstance('Feedback Form') 
    ->setFrom(array('[email protected]' => 'Feedback Form')) 
    ->setTo(array('[email protected]' => 'Feedback Form')) 
    ->setBody($data, 'text/html') 
    ; 

// Send the message 
$result = $mailer->send($message); 

?> 
<p>Thank you for give us your feedback. We will respond to your feedback as soon as possible.</p> 
<p>Please click <button type="btn btn-success"><a href="contact.html">Here</a></button> to return to the site.</p> 

ここでの画面キャプチャ、私が間違って何をやったか

enter image description here

?助けて。 (ブートストラップをフォームとして使用)

+0

HTMLフォームを含め、すべてのコードを掲載してください。 – JustBaron

+0

htmlでも投稿してください –

+0

早く投稿しないと申し訳ありません – ShafiqqAziz

答えて

3

OK、フォーム入力に名前属性がないようです。例えば、

は、属性を追加し、フォームが動作するはずです:

<input type="text" class="form-control" id="name" name="name" placeholder="Enter name" required data-error="NEW ERROR MESSAGE"> 
<input type="text" class="form-control" id="email" name="email" placeholder="Enter name" required> 
<textarea id="message" class="form-control" name="message" rows="5" placeholder="Enter your message" required></textarea> 
1

問題は、あなたが入力にname属性を追加する必要があります。
その代わりに <input type="text" class="form-control" id="name" name="name" placeholder="Enter name" required data-error="NEW ERROR MESSAGE">を使用すると、PHPスクリプトはPOST要求に付属の配列からこの値を取得できます。
各入力にname属性を追加します。スクリプトはフォームの送信後に取得します。

関連する問題