2017-12-12 2 views
0

Ich habe ein einfaches Formular, das eine E-Mail mit einigen Feldern sendet und auch speichert es die Felder in. CSV-Datei.E-Mail-Feld ist leer auf PhpMail

Hier ist mein Code (HTML, jQuery, PHP)

Die Form:

<form id="request-size"> 
    <input name="email" id="email" type="email" class="cmesgmail" placeholder="email"> 
    <input type="hidden" name="size" id="size" value="52"> 
    <input type="hidden" name="sku" id="sku" value="315"> 
    <input type="hidden" name="pridpr" id="pridpr" value="849"> 
    <input class="request-size-btn btn" value="SEND"> 
</form> 

Die jQuery:

jQuery('.request-size-btn').live('click', function() { 
    jQuery.ajax({ 
    type: "POST", 
    url: "https://example.com/sendmail.php", 
    data: jQuery('form#request-size').serializeArray(), 
     success: function(data) { 
      jQuery('.cmesg').empty(); 
      jQuery('.cmesg').append(data); 
     } 
     }); 
    }); 
}); 

Die PHP Sendmail:

$EmailFrom = $_REQUEST['email']; 
$SKU = $_REQUEST['sku']; 
$SIZE = $_REQUEST['size']; 
$ID = $_REQUEST['pridpr']; 
$EmailTo = "[email protected]"; 
$Subject = "Contact for Size"; 
$DATENOW = date('d/m/Y h:i:s a', time()); 

$Body = ""; 
$Body .= "<b>Email:</b> "; 
$Body .= $EmailFrom . "\r\n"; 
$Body .= "<br>"; 
$Body .= "<b>Product SKU:</b> "; 
$Body .= $SKU . "\n"; 
$Body .= "<br>"; 
$Body .= "<b>Product ID:</b> "; 
$Body .= $ID . "\n"; 
$Body .= "<br>"; 
$Body .= "<b>Product Size:</b> "; 
$Body .= $SIZE; 
$Body .= "<br>"; 
$Body .= "<b>Date:</b> "; 
$Body .= $DATENOW; 

$headers = "MIME-Version: 1.0" . "\n"; 
$headers .= "Content-type: text/html; charset=UTF-8" . "\n"; 
$headers .= "From: ". $EmailFrom ."" . "\n"; 

$success = mail($EmailTo, $Subject, $Body, $headers); 

if ($success){ 
    echo '<div class="alert alert-success">Done!</div>'; 
    $file = fopen('request-size.csv', 'a'); 

    $data = array(
     array($EmailFrom, $SKU, $ID, $SIZE, $DATENOW) 
    ); 

    foreach ($data as $row) 
    { 
     fputcsv($file, $row); 
    } 

    fclose($file); 
} 
else{ 
    echo '<div class="alert alert-danger">Error!</div>'; 
} 

Ich habe alle Felder in meiner CSV-Datei und E-Mail, außer dem Feld "E-Mail". Es ist immer leer. Ich habe auch versucht, den Namen des E-Mail-Feldes (E-Mail zu E-Mailreq) auf beiden Seiten (HTML, PHP) zu ändern, hat aber nicht funktioniert.

Irgendwelche Vorschläge? Vielen Dank!

+0

Ich habe fast nie die Verwendung von '$ _REQUEST' gesehen. Hast du '$ _POST' probiert? –

+0

Sollte das keinen Unterschied machen, @chade_ –

+0

@chade_ ja, nichts passiert – zagzter

Antwort

0

Wenn das Aktualisieren von jQuery eine Option für Sie ist, tun Sie das. Version 1.6.2 und höher sollte funktionieren (möglicherweise auch vorher, aber ich bin mir nicht sicher).

Ansonsten ist die

<input name="email" id="email" type="text" class="cmesgmail" placeholder="email"> 

Ältere Versionen von jQuery nicht enthalten Unterstützung für die HTML5-Input-Typen

<input name="email" id="email" type="email" class="cmesgmail" placeholder="email"> 

zu

ändern.