2015-04-17 121 views
-1

只是想知道爲什麼我的代碼不工作。當然,我用有效的電子郵件取代了郵件地址。你有線索嗎?簡單的sendmail在php不工作

該表格似乎工作,但問題是,我沒有收到我的收件箱中的郵件。

這是HTML的部分:

 <form id="contact-form"> 

      <p id="contact-form-success" class="form-success-message column-container align-center"> 
       <strong><i class="fa fa-check-square-o"></i> Ihre Anfrage wurde verschickt!</strong><br> 
       Text Text 
      </p> 
      <div class="column-container formFields"> 
      <div class="column one-half"><p><input id="contact-name" class="required" name="contact-name" type="text" placeholder="Vorname"></p> 
      <p><input id="contact-name-last" class="required" name="contact-name-last" type="text" placeholder="Nachname"></p> 
      </div> 
      <div class="column one-half last"> 
      <p><input id="contact-email" class="required" name="contact-email" type="email" placeholder="E-Mail"></p> 
      <p><input id="contact-phone" name="contact-phone" type="tel" placeholder="Telefon (optional)"></p> 
      </div> 
      </div> 
      <br/> 
      <p class="submit formFields"><button class="form-submit button grey" type="submit">Angebot anfordern</button></p> 
     </form> 

的PHP-部分:

<?php 

$email = "[email protected]"; 
$subject = "[Auftrag+] Angebot Anfrage"; 

if (isset($_POST["contact-name"]) && isset($_POST["contact-name-last"]) && isset($_POST["contact-email"])) { 

    $name = htmlentities($_POST["contact-name"], ENT_QUOTES, "UTF-8"); 
    $name_last = htmlentities($_POST["contact-name-last"], ENT_QUOTES, "UTF-8"); 
    $email = htmlentities($_POST["contact-email"], ENT_QUOTES, "UTF-8"); 
    $phone = htmlentities($_POST["contact-phone"], ENT_QUOTES, "UTF-8"); 
    $ip = $_SERVER['REMOTE_ADDR']; 
    $to = $email; 
    $subject = $subject; 
$message = 
<<<HTML 
Name: {$name} 
Nachname: {$name_last} 
Email: {$email} 
Phone: {$phone} 
IP: {$ip} 
HTML; 
    $headers = "From:" . $email; 
    mail($to, $subject, $message, $headers); 
    echo "Success"; 

} else { 

    echo "POST request does not contain necessary data!"; 

} 
+0

郵件沒有收到? –

+0

你認爲代碼是正確的嗎?無法弄清楚。另一種形式工作,我收到郵件 –

+0

似乎你試圖發送一封郵件給自己,郵件服務器可能會認爲它是垃圾郵件和/或阻止它。嘗試發送它沒有來自標題或與來自標題的通用。 「[email protected]」? –

回答

0
  1. 檢查什麼實際的郵件命令響應:

    回聲郵件($到,$ subject,$ message,$ headers);

  2. 檢查您的垃圾郵件,如果郵件是收到,你應該用實際從ADRESS該郵件是從

0

送到你的任何機會上,如Gmail服務電子郵件測試的電子郵件帳戶?

如果您的「發件人」域名具有SPF記錄,並且您要發送電子郵件的計算機不是指定的域名MX記錄中的指定IP地址,您的電子郵件將被拒絕。

如果您是從Linux機器發送檢查您的郵件日誌(/無功/日誌/ maillog中)

0

可以打印所有變量,檢查全局變量,那麼不要null.have一個重試。如果你遇到這個問題,你可以搜索更多的源如SMTP。

0

你的答案是

更改此<form id="contact-form" method="post">

此外

如果沒有

<input id="contact-name" class="required" name="contact-name" type="text" placeholder="Vorname" required> 

和檢查isset($_POST["aaa"])使用required標籤的提交按鈕設置name='submit'

因此,如果該字段爲空提交按鈕沒有反應。當它的填充來到PHP代碼。

讓你可以輕鬆的代碼中使用

if(isset($_POST["submit])) 
{ 
    //Your code here 
} 

試試這個

+0

'action =「POST」'或'method =「POST」'? –

0

首先更改

<form action="your_action_url" method="post">我想你忘了添加此

大部分時間的簡單的郵件可能會失敗,大多數郵件將是重定向到垃圾郵件。 爲避免這種情況,我們需要正確添加郵件標題

我猜以下更改會對您有所幫助。

<?php 

$subject = "[Auftrag+] Angebot Anfrage"; 

if (isset($_POST["contact-name"]) && isset($_POST["contact-name-last"]) && isset($_POST["contact-email"])) { 

    $name = $_POST["contact-name"]); 
    $name_last = $_POST["contact-name-last"]; 
    $email = $_POST["contact-email"]; 
    $phone = $_POST["contact-phone"]; 
    $ip = $_SERVER['REMOTE_ADDR']; 
    $to = $email; 
    $subject = $subject; 

    $message = " 
     Name: ".$name."<br/> 
     Nachname: ".$name_last."<br/> 
     Email: ".$email."<br/> 
     Phone: ".$phone."<br/> 
     IP: ".$ip."<br/>"; 

    $headers .= "Reply-To: The Sender <[email protected]>\r\n"; 
    $headers .= "Return-Path: The Sender <[email protected]>\r\n"; 
    $headers .= "From: The Sender <[email protected]>\r\n"; 
    $headers .= "Organization: Sender Organization\r\n"; 
    $headers .= "MIME-Version: 1.0\r\n"; 
    $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; 
    $headers .= "X-Priority: 3\r\n"; 
    $headers .= "X-Mailer: PHP". phpversion() ."\r\n" 


    mail("[email protected]", $subject, $message, $headers); 
    echo "Success"; 

} else { 

    echo "POST request does not contain necessary data!"; 

} 
?> 

如果仍電子郵件沒有收到,那麼你可以爲 SMTP郵件一試,這將是更快更準確的