Intereting Posts
Брандмауэр Silex / Symfony Security Access Доступ к токену пользователя за пределами защищенной зоны импорт продукта пучка в magento Передайте значение в filter_input (), используя переменную Представление PDF-формы Отправить JSON из Flash в PHP openssl_verify и "error: 0906D06C: PEM-процедуры: PEM_read_bio: нет стартовой строки" Проблемы с сохранением сеанса, получение PHP Неустранимая ошибка: Исключение выбрано без рамки стека Неизвестно в строке 0 В Laravel 5.1 Нельзя публиковать значение флажка Передача значения, включая пробелы в вызове Ajax Ошибка с JSON в javascript: неожиданный символ без пробелов после данных JSON Как я могу предотвратить добавление дополнительных строк после URL-адресов, которые заканчиваются на .php? Доступ к тегам внутри CDATA в XML с помощью PHP Можно ли изменить ширину табуляции (\ t) в строке PHP? PhpStorm не получает соединения xdebug: журнал событий PhpStorm: не удается оценить выражение 'isset ($ _ SERVER )' могу ли я изменить значение $ _SERVER ?

Отправить письмо с шаблоном, используя php

Как я могу отправить электронное письмо с помощью php, а затем добавить шаблон в электронную почту? Я использую это:

$to = "someone@example.com"; $subject = "Test mail"; $message = "Hello! This is a simple email message."; $from = "someonelse@example.com"; $headers = "From: $from"; mail($to,$subject,$message,$headers); echo "Mail Sent."; 

И все отлично! Проблема заключается в том, как добавить шаблон.

Related of "Отправить письмо с шаблоном, используя php"

Почему бы не попробовать что-то простое:

 $variables = array(); $variables['name'] = "Robert"; $variables['age'] = "30"; $template = file_get_contents("template.html"); foreach($variables as $key => $value) { $template = str_replace('{{ '.$key.' }}', $value, $template); } echo $template; 

Ваш файл шаблона выглядит примерно так:

 <html> <p>My name is {{ name }} and I am {{ age }} !</p> </html> 

У меня есть небольшая трещина в этом 🙂

 class Emailer { var $recipients = array(); var $EmailTemplate; var $EmailContents; public function __construct($to = false) { if($to !== false) { if(is_array($to)) { foreach($to as $_to){ $this->recipients[$_to] = $_to; } }else { $this->recipients[$to] = $to; //1 Recip } } } function SetTemplate(EmailTemplate $EmailTemplate) { $this->EmailTemplate = $EmailTemplate; } function send() { $this->EmailTemplate->compile(); //your email send code. } } 

Обратите внимание на функцию SetTemplate()

Heres a a small template class

 class EmailTemplate { var $variables = array(); var $path_to_file= array(); function __construct($path_to_file) { if(!file_exists($path_to_file)) { trigger_error('Template File not found!',E_USER_ERROR); return; } $this->path_to_file = $path_to_file; } public function __set($key,$val) { $this->variables[$key] = $val } public function compile() { ob_start(); extract($this->variables); include $this->path_to_file; $content = ob_get_contents(); ob_end_clean(); return $content; } } 

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

 $emails = array( 'bob@bobsite.com', 'you@yoursite.com' ); $Emailer = new Emailer($emails); //More code here $Template = new EmailTemplate('path/to/my/email/template'); $Template->Firstname = 'Robert'; $Template->Lastname = 'Pitt'; $Template->LoginUrl= 'http://stackoverflow.com/questions/3706855/send-email-with-a-template-using-php'; //... $Emailer->SetTemplate($Template); //Email runs the compile $Emailer->send(); 

Это действительно все, что нужно, просто нужно знать, как использовать объекты и их довольно простые оттуда, ooh и шаблон выглядел бы примерно так:

 Welcome to my site, Dear <?php echo $Firstname ?>, You have been registered on our site. Please visit <a href="<?php echo $LoginUrl ?>">This Link</a> to view your upvotes Regards. 
  $message_to_client = file_get_contents("client_email.html"); //$message_to_client = "bla bla {{ EMAIL }} bla bla"; $variables = array( 'SITE_TITLE' => $SITE_TITLE, 'SITE_LOGO' => $SITE_LOGO, 'SITE_URL' => $SITE_URL, 'CLIENT_NAME' => strip_tags($data->clientname), 'PHONE' => strip_tags($data->phone), 'EMAIL' => strip_tags($data->email), 'CITY' => strip_tags($data->city), 'REGION' => strip_tags($data->region), 'COMMENT' => htmlentities($data->comment) ); $message_to_client = preg_replace_callback('/{{([a-zA-Z0-9\_\-]*?)}}/i', function($match) use ($variables) { return $variables[$match[1]]; }, $message_to_client ); 

Попробуй это….

 $body='<table width="90%" border="0"> <tr> <td><b>Name:</b></td> <td>'.$name.'</td> </tr> <tr> <td><b>Email:</b></td> <td>'.$email.'</td> </tr> <tr> <td><b>Message:</b></td> <td>'.$message.'</td> </tr> <tr></table>'; mail($to,$subject,$body,$headers); 

Сначала вы должны создать HTML-шаблон.

 <form action="#" id="ContactForm" method="post" enctype="multipart/form-data"> <table border="0" cellspacing="5" cellpadding="5" style="background-color:#CCCCCC; text-align:center;"> <tr> <td width="15%">Name:</td> <td width="85%"><input name="name" type="text" required></td> </tr> <tr> <td>Email:</td> <td><input name="email" type="email" required></td> </tr> <tr> <td colspan="2"><input name="sub" type="submit" value="Submit"></td> </tr> </table> 

Ниже код – это функциональный код почты с вашим шаблоном.

  if ($_SERVER["REQUEST_METHOD"] == "POST") { $name=$_REQUEST['name']; $email=$_REQUEST['email']; $to=$email; //change to ur mail address $subject="UandBlog - Send Email Template Demo"; $message = file_get_contents('Your template path'); // Your Template $headers = 'MIME-Version: 1.0'."\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1'."\r\n"; $headers .= "From: noreply@uandblog.com"; mail($to, $subject, $message, $headers); } .  if ($_SERVER["REQUEST_METHOD"] == "POST") { $name=$_REQUEST['name']; $email=$_REQUEST['email']; $to=$email; //change to ur mail address $subject="UandBlog - Send Email Template Demo"; $message = file_get_contents('Your template path'); // Your Template $headers = 'MIME-Version: 1.0'."\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1'."\r\n"; $headers .= "From: noreply@uandblog.com"; mail($to, $subject, $message, $headers); } 

Вы также можете скачать полный код с помощью шаблона с сайта http://www.uandblog.com

Ссылка: http://www.uandblog.com/How-to-Send-Mail-with-Email-or-HTMLTemplate-using-php

Вы можете использовать $this в шаблоне, так как вы находитесь в вызывающем файле.

Вам нужно включить шаблон только после команды ob_start и получить его содержимое:

 $this->customer = 1234; //* This variable is used in the template ob_start(); include 'template.php'; $template = ob_get_clean(); var_dump($template); //* Outputs '<b>1234</b>' // template.php <b><? echo $this->customer ?></b> 

Мой простой пример

template.php

 <?php class Template { function get_contents($templateName, $variables) { $template = file_get_contents($templateName); foreach($variables as $key => $value) { $template = str_replace('{{ '.$key.' }}', $value, $template); } return $template; } } ?> 

контакт-us.tpl

 Name: {{ name }} Email: {{ email }} subject: {{ subject }} ------messages------ {{ messages }} --------------------- 

main.php

 <?php include_once 'template.php'; $name = "Your name"; $to = "someone@example.com"; $subject = "Test mail"; $message = "Hello! This is a simple email message."; $from = "someonelse@example.com"; $headers = "From: $from"; $text = Template::get_contents("contact-us.tpl", array('name' => $name, 'email' => $from, 'subject' => $subject, 'messages' => $message)); echo '<pre>'; echo $text; echo '<pre>'; $mail = @mail($to, $subject, $text, $headers); if($mail) { echo "<p>Mail Sent.</p>"; } else { echo "<p>Mail Fault.</p>"; } ?> 

Создайте файл шаблона, например,

/path/to/templates/template.twig:

Уважаемый {{name}},

Благодарим вас за сообщение о {{subject}}.

Затем следуйте инструкциям на странице https://twig.symfony.com/doc/2.x/api.html, чтобы установить и использовать движок шаблонов завивки с помощью Composer

 require_once '/path/to/vendor/autoload.php'; $loader = new Twig_Loader_Filesystem('/path/to/templates'); $twig = new Twig_Environment($loader, array()); 

Затем отрисуйте и отправьте свой адрес электронной почты:

 $to = "someone@example.com"; $subject = "Test mail"; $message = $twig->render('template.twig', array( 'name' => 'Fred', 'subject' => 'philately', )); $from = "someonelse@example.com"; $headers = "From: $from"; mail($to,$subject,$message,$headers);