0

私は現在、自作のphpコンタクトフォームを介して送信される受信メールのスタイルを設定しようとしています。

わずかな問題が 1 つだけあります。受信ボックスで電子メールを受信すると、html がコードではなく静的テキストとして表示されます。

私を助けてくれる人はいますか?

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$from = 'From: info@epicconcepts.nl'; 
$to = 'info@epicconcepts.nl'; 
$subject = 'Contact formulier bericht';
$human = $_POST['human'];

$headers = "From: " . strip_tags($_POST['req-email']) . "\r\n";
$headers .= "Reply-To: ". strip_tags($_POST['req-email']) . "\r\n";
$headers .= "CC: quincynorbert@live.nl\r\n";
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

$message = '<!DOCTYPE html>
            <html>
            <head>
            <style type="text/css">
                body{background: #EDEBEA;}
                #naam{background:#222222;border:4px solid #DDD;width:650px;}
                #mail{background:#222222;border:4px solid #DDD;width:650px;}
                #message{background:#222222;border:4px solid #DDD;width:650px;}
            </style>
            </head>
            <body>
            <div id="naam">'.$name.'</div>
            <div id="mail">'.$email.'</div>
            <div id="message">'.$message.'</div>
            </body>
            </html>';

if ($_POST['submit']) {
    if ($name != '' && $email != '') {
        if ($human == '4') {                 
            if (mail ($to, $subject, $message, $from)) { 
            echo '<p class="correct-message">Your message has been sent!</p>';
        } else { 
            echo '<p class="correct-message">Something went wrong, go back and try again!</p>'; 
        } 
    } else if ($_POST['submit'] && $human != '4') {
        echo '<p class="correct-message">You answered the anti-spam question incorrectly!</p>';
    }
    } else {
        echo '<p class="correct-message">You need to fill in all required fields!</p>';
    }
}
?>

事前にありがとう

4

1 に答える 1

0

ヘッダーは文字列に含まれています$headersが、それをメール関数に渡しません。渡す$fromため、HTML および MIME ヘッダーは送信されないため、プレーン テキストのメールが届きます。

if (mail ($to, $subject, $message, $from)) {
//                                 ^ should be $headers

への変更:

if (mail ($to, $subject, $message, $headers)) {

また、MIME ヘッダーは、連結文字を含めなかったため、ヘッダーの現在のリストを消去します。次のよう.に変更します。

$headers .= 'MIME-Version: 1.0' . "\r\n";
//       ^ don't forget this

最後に、HTML メールで CSS ブロックを使用しないようにする必要があります。すべてのメール クライアントが CSS ブロックを読み取るわけではありません。一部のメール クライアントは、要素に属性を直接指定して<style>インラインで定義されている場合にのみ CSS を読み取ります。style=""

編集: From ヘッダーをハードコードするには、次を使用します:

$headers = "From: info@mycompany.com\r\n";

上記で指摘した連結エラーを必ず修正してください。そうしないと、Fromヘッダーが上書きされて送信されません。

于 2013-02-11T18:27:27.397 に答える