Макет содержимого формы в электронной почте

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
    это то, что вы должны изменить тип заголовка MIME.
Теги:
email

2 ответа

1

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

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

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

Использовать это:

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

PHP Поддерживает HTML-адрес электронной почты по мере необходимости. В основном это зависит от вашего типа контента.

Обратитесь к разделу "Тип содержимого сообщения":
https://en.wikipedia.org/wiki/HTML_email#Multi-part_formats

Библиотека PHP для отправки пользовательской электронной почты HTML:
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);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню