Bir web sayfasında önizleme için bir HTML e-posta görüntülemek için?

3 Cevap php

Ben bir HTML e-posta bir "önizleme" görüntülemek çalışıyorum. Benim veritabanında HTML var ve şimdi bir iframe işlemek gerekir, ya da açılır pencere falan. Ben sayfada bir div etiketi içine html enjekte çalışıyorum, ama bir şey göstermez. İşte (Ben HTML etiketlerini iç içe) içine çalıştırıyorum sorun:

<html>
    <body>
        <h1>My page</h1>
        <div id="email-body">
            <html>
                <body>
                    <p>email</p>
                </body>
            </html>
        </div>
    </body>
</html>

3 Cevap

Sen bir açılır pencere HTML yazabilirsiniz.

var preview = window.open("", /* options */);
preview.document.write(html);
preview.document.close();

Ama benim gibi, pek çok pop-up pencereleri sevmediğim. Başka bir göz sadece only <body> içeriğini görüntülemek için. Daha da iyisi, en posta istemcileri sadece bunu destekler. Bir HTML parçası olacak gibi text/html bir içerik türü, bir HTML e-posta gönderebilirsiniz <body>.

<p>email</p>

Bu şekilde önizleme için sadece ana sayfasında her zamanki gibi bazı div bunu enjekte edebilir.

Eğer elemanları şekillendirmek, ancak satır içi stilleri sevmediğim gibi, aynı zamanda <style> öğe ekleyebilirsiniz. Bu e-posta istemcileri çoğu da sadece bunu destekler.

<style>p { font-family: arial, sans-serif; }</style>
<p>email</p>

HTML purist görüşüne bu gerçekten sözdizimsel geçersiz. Ama (! Da webbrowsers olarak) çalışır ve Stuff, bir sürü kadar kolaylaştırır.

Assuming that the markup looks exactly like you showed in your post, you could just strip the tags out like this (run this on the email field after you get it from your db):
$email = preg_replace('/\<\/?(html|body)\>/', '', $email);

Bu e-postanın sadece vücut içerik bırakacaktır. Bu sürece e-posta böyle bir <head> bölüm gibi <html> ve <body> arasında bir şey yok gibi çalışacaktır.

Bir belgede iki HTML yapıları olamaz çünkü çalışmaz.

Ben görebiliyorum Bunu yapmanın tek yolu, bir iframe kullanıyor.