2015-12-10 3 views
1

Интересно, может ли кто-нибудь дать мне несколько советов с PHP для отображения содержимого в письме?Формат содержания формы по электронной почте

В настоящее время данные формы отображаются одной строкой непосредственно под другой, и, поскольку формы являются большими, ее очень трудно читать.

Как получить строку между ними, чтобы она выглядела так?

NAME 

EMAIL 

ETC. 

Вот что я до сих пор:

<?php 
function IsInjected($str) 
{ 
$injections = array(
     '(\t+)', 
     '(%08+)', 
     '(%09+)' 
     ); 

$inject = join('|', $injections); 
$inject = "/$inject/i"; 

if(preg_match($inject,$str)) 
{ 
    return true; 
} 
else 
{ 
    return false; 
} 
} 

function processText($text) { 
$text = strip_tags($text); 
$text = trim($text); 
$text = htmlspecialchars($text); 
return $text; 
} 

$formname=$_POST['formname']; 
$spamcode=$_POST['spam_preventer_code']; 

switch ($formname) { 
    case 0: $to='[email protected]'; 
     $spamcodecheck=42; 
     $thankyoupage="thankyou.htm"; 
     break; 
    case 1: $to='[email protected]'; 
     $spamcodecheck=42; 
        $thankyoupage="thankyou.htm"; 
     break; 
    case 3: $to='[email protected]'; 
     $spamcodecheck=42; 
        $thankyoupage="thankyou.htm"; 
     break; 
    case 4: $to='[email protected]'; 
     $spamcodecheck=73; 
        $thankyoupage="thankyou.htm"; 
     break; 
     case 5: $to='[email protected]'; 
     $spamcodecheck=48; 
        $thankyoupage="thankyou.htm"; 
     break; 
     case 6: $to='[email protected]'; 
     $spamcodecheck=64; 
        $thankyoupage="thankyou.htm"; 
     break; 
     case 7: $to='[email protected]'; 
     $spamcodecheck=48; 
        $thankyoupage="thankyou.htm"; 
     break; 
} 



if (!empty($to)) { 
if(isset($_POST['submit'])){ 
    if($spamcode==$spamcodecheck) { 
     $message="Form Contents \n\n"; 
     foreach ($_POST as $key => $value) { 
      if(!IsInjected($value)) $message=$message.$key."=".processText($value)."]\n"; 
     } 

     $subject = "Form $formname submission"; 
     mail($to,$subject,$message); 
     //echo "Mail Sent. Thank you, we will contact you shortly."; 
     $header="Location: $thankyoupage"; 
      header($header); 
    } else { 
     echo "Bad Spam Code, please go back and try again."; 
    } 
} else { 
    echo "No form submit in post data"; 
} 
} else { 
echo "Bad Form Name."; 
} 

?> 
+0

это то, что вы должны изменить тип пантомимы заголовка. –

ответ

1

Вам просто нужно дважды пространство, в том числе дополнительный символ новой строки \n при сборке ваших полей.

Вместо этого:

if(!IsInjected($value)) $message=$message.$key."=".processText($value)."]\n"; 

Используйте это:

if(!IsInjected($value)) $message=$message.$key."=".processText($value)."]\n\n"; 
0

PHP поддерживает HTML Email, как вам нужно. В основном это зависит от вашего типа контента.

См понять тип контента Сообщение:
https://en.wikipedia.org/wiki/HTML_email#Multi-part_formats

PHP библиотека для отправки пользовательских HTML Email:
https://github.com/PHPMailer/PHPMailer

$to = '[email protected]'; 

$subject = 'Your Custom HTML Format Email'; 

$headers = "From: " . strip_tags($_POST['from-email']) . "\r\n"; 
$headers .= "Reply-To: ". strip_tags($_POST['reply-email']) . "\r\n"; 
$headers .= "CC: [email protected]\r\n"; 
$headers .= "MIME-Version: 1.0\r\n"; 

$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 


$message = '<html><body>'; 
$message .= '<table>'; 
$message .= '<tr>'; 
$message .= '<td>Name</td>'; 
$message .= '<td>John</td>';  
$message .= '</tr>'; 
$message .= '<tr>'; 
$message .= '<td>Email</td>'; 
$message .= '<td>[email protected]</td>';  
$message .= '</tr>'; 
$message .= '<tr>'; 
$message .= '<td>Etc</td>'; 
$message .= '<td>etc . . </td>';   
$message .= '</tr>'; 
$message .= '</table>'; 
$message .= '</body></html>'; 


mail($to, $subject, $message, $headers);