LifeAct
@LifeAct
Создаем и раскручиваем, не ставим на конвейер

Как в php использовать шаблон для письма?

Всем привет!

Хочу слать письма, чтобы шаблон письма формировался с html файла, гуглил по разному: send php html template и т д, но все результаты - формирование шаблона прямо в коде.

В дотнете вот как удобно:

string body,   Title;
                    using (var sr = new System.IO.StreamReader(Server.MapPath("\\App_Data\\EmailTemplates\\") + "CabinetGreated.html"))
                    {
                        body = sr.ReadToEnd();
                    }

string messageBody = string.Format(body, "Организатор", email, password, Id, Title);


CabinetGreated.html - joxi.ru/KAgMW4I4XEP4ml

как можно сделать такое же в php?
  • Вопрос задан
  • 1222 просмотра
Решения вопроса 1
Gori4ka
@Gori4ka
WordPress Developer
Здравствуй, дорогой друг)

Вот вам кусочек с рабочего проэкта.
суть вот в чём.

Есть функция которая принимает 2 параметра
$template - это название файла с шаблоном в папке с шаблонами.
$args - Массив для замены значений в письме.

public function send_email( $template, $args ) {
				ob_start();
				include APA_PATH . "/templates/emails/{$template}.php";
				$content = ob_get_clean();
				foreach ( $args as $key => $value ) {
					if ( ! is_array( $value ) && ! is_object( $value ) ) {
						$search  = '{$' . $key . '}';
						$content = str_replace( $search, $value, $content );
					}
				}
				$message = $content;

				wp_mail( $this->getEmailTo(), $this->getEmailSubject(), $message, $header );
			}


Получаем содержимое файла с шаблоном и сохраняем в переменную $content
ob_start();
include APA_PATH . "/templates/emails/{$template}.php";
$content = ob_get_clean();


Проходимся по массиову и ищем плейсхолдеры формата {$user_name} заменяем на реальные значения с массива и заменяем в переменной $content
foreach ( $args as $key => $value ) {
					if ( ! is_array( $value ) && ! is_object( $value ) ) {
						$search  = '{$' . $key . '}';
						$content = str_replace( $search, $value, $content );
					}
				}


И финальный шаг: отсылаем письмо
$message = $content;
wp_mail( $this->getEmailTo(), $this->getEmailSubject(), $message, $header );


PS. wp_mail() - это функция из вордпресс
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы