PHP html e-posta kullanarak html şablon

4 Cevap php

ben yapmaya çalışıyorum bir i gibi ayrı bir dosyada saklanır bir şablon, olmak istediğiniz bir html mail Sytem ve benim html yapın:

<div clas="headr"></div>
    <div class="content"></div>
<div class="footer"></div>

when i want to send the mail i want my mail content(from the input form) to go in that div.content ve then to send the whole html(template + submitted text). what is the best way to do that? i'm thinking to something like:

  1. postayı gönderen benim php içine şablonu alma
  2. bir "içerik" sınıfı ile div bulmak ve içine gönderilen metin eklemek
  3. posta göndermek

ama ben o div "bulmak" ve içine gönderilen metin yazmak için nasıl bilmiyorum.

4 Cevap

Pekka Dediğim gibi, sadece str_replace şablonunuzda veri eklemek için kullanabilirsiniz. Sadece bir yer tutucu ekleyin:

<div clas="header"></div>
<div class="content">{{content}}</div>
<div class="footer"></div>

Sonra içeriği ile yer tutucu değiştirin:

$content = 'Whatever you want to insert...';
$tpl = file_get_contents('yourtemplate.html');
$tpl = str_replace('{{content}}', $content, $tpl);
mail($tpl, ...);

Sen şablon içinde bir PHP komut dosyası koymak ve daha sonra PHP kendisi örneğin, işleme yapmak olabilir:

template.html:

<div clas="headr"></div>
    <div class="content"><?php echo $body; ?></div>
<div class="footer"></div>

Sonra PHP kodu, yüklemek için:

$body = "Put this into the content tag...";
ob_start();
include("template.html");
$email = ob_get_clean();

Edit: Bu durumda yerine yerine basit benim yöntemi kullanmak için belki biraz overkill, ama bunun yerine daha karmaşık bir şablon istedim tüm e-posta mesajı yerine, onu kolaylaştırır eğer. Örneğin:

<table>
 <tr>
  <td>Name:</td>
  <td><?php echo $name; ?></td>
 </tr>
 <tr>
  <td>Email:</td>
  <td><?php echo $email; ?></td>
 </tr>
</table>

Çok esnek ve değiştirmek için çok fazla değişken var olan engeller, ve daha da önemlisi kod dışarı html tutar.

str_replace() şablonunuzda içine içeriği eklemek için kullanın.

PHPMailer kolayca HTML E-mail göndermek için böyle bir sınıfını kullanın.

Eğer şablon içinde yer tutucular veya PHP kodu kullanmaktan kaçınmak istiyorsanız size jQuery bir PHP liman olan phpQuery bir göz olabilir.

Sizin örnekte buna benzer bir şey olur (bkz. docs):

<?php
$body = 'The body of your email message';

$template = file_get_contents('template.html');
$email = pq('div.content').html($body);
?>

Biraz overkill görünebilir ama aynı CSS seçici dayalı özelliklerin daha eklemek niyetinde olmadığını, sadece iyi bir çözüm olabilir PHP kapalı tasarımcıların 'pis ellerini almak istiyorum OG.