2016-04-04 14 views
0

Ich lerne PHP und ich versuche, eine E-Mail an mich selbst senden mit einem HTML-Formular, aber es funktioniert nicht.Senden von E-Mail mit PHP und HTML-Formular

<form action="index.php" role="form" method="post" name="emailform"> 
         <div class="form-group"> 
          <label for="email">Email address:</label> 
          <input type="email" class="form-control" id="email" name="email"> 
         </div> 
         <div class="form-group"> 
          <label for="comment">Text:</label> 
          <textarea type="textarea" class="form-control" id="textarea" rows="5" name="textarea"></textarea> 
         </div> 
         <button type="submit" class="btn btn-default" id="submit" name="submit">Submit</button> 
        </form> 

        <?php 
         function email() 
          { 
          $to = 'my_mail'; 
          $message = $_POST['textarea']; 
          $from = $_POST['email']; 
          $subject = 'Portfolio'; 
          $mail_headers = "From: " . $from . " <" . $from . ">\r\n"; 
          $mail_headers .= "Reply-To: " . $from . "\r\n"; 
          $mail_headers .= "X-Mailer: PHP/" . phpversion(); 

          echo $to . " " . $message . " " . $from; 
          if(@mail($to, $subject, $message, $mail_headers)) 
           echo @mail($to, $subject, $message, $mail_headers); 
          else echo "ERROR"; 
          } 

if(isset($_POST['submit'])) 
email(); 
?> 

my_mail ist meine Mail (ich es hier ersetzt aber im Code ist meine echte E-Mail). Der Code scheint es angezeigt, das Echo in der Tat @Mail zu arbeiten, aber die E-Mail in meinem Posteingang

+0

Sie auf localhost sind? –

+0

@DivyeshSavaliya Ja, ich bin in localhost! – untruste

+1

Sie müssen Ihren Server zum Senden von E-Mails konfigurieren. Sie müssen SMTP auf Ihrem lokalen Server einrichten –

Antwort

0

Der Code sieht gut aus nicht erscheint, aber ich denke, da @ in der Mail-Funktion sind Sie nicht zu sehen, irgendwelche Fehler. Wenn Sie Fehler nicht anzeigen möchten, können Sie es wie folgt verwendet werden:

<?php 
if(@mail($to, $subject, $message, $mail_headers)){ 
    echo "Mail Sent!"; 
}else{ 
    print_r(error_get_last()); 
} 
?> 

Auf diese Weise der Fehler nicht ausgelöst, aber Sie können error_get_last() verwenden, um den Fehler zu sehen und es melden Sie sich, wenn Sie wollen.

PS Sie verwenden Mail-Funktion 2 mal, so würde E-Mail zweimal gesendet werden, wenn es zur Arbeit geht.

0

hier ist der richtige Weg.

<form action="contact.php" etc... etc..> 
blah blah blah 
</form> 

Dann eine neue PHP-Datei (contact.php) erstellen und verwenden Sie die folgende

<?php 

$field_name = $_POST["cname"];/* change " " according to your form */ 
$field_email = $_POST["cmail"]; 
$field_sub = $_POST["csub"]; 
$field_message = $_POST["cmsg"]; 

$to = "[email protected], [email protected]"; 
$subject = " give subject" ; 
$message = "message"; 

if(mail($to,$subject,$message)) 
{ 
     echo "<script>alert('Your Message was sent Successfully. Thank You For Your Time !');</script>"; 
     } 
     else 
     { 
     echo "<script>alert('Something wrong happened. Please try again later. Sorry For The Trouble');     </script>"; 
     } 


?> 
<meta http-equiv="refresh" content="2; url=contact.html"> 
<!-- for coming back to intial page -->