Html письмо mail php: email — Отправка писем из PHP функцией mail() в виде HTML

Содержание

wp_mail() – отправка почты в WordPress

Практическое использование этой функции при отправке формы обратной связи вы можете найти в моём видеоуроке.

Функция возвращает true в случае успешной отправки email, однако это не означает, что письмо будет получено и прочтено. Это означает, что сама функция отработала без ошибок.

Кроме того, по умолчанию тип контента письма text/plain, что значит, что HTML-теги не поддерживаются, но это легко исправить несколькими строчками кода.

Кодировка письма по умолчанию совпадает с кодировкой вашего сайта на WordPress, но и это вы также можете изменить фильтров wp_mail_charset.

wp_mail( $to, $subject, $message, $headers = '', $attachments = array() )

Параметры

$to
(строка|массив) получатель или получатели письма (в виде массива или через запятую). Обратите внимание, если вы укажете их через запятую, то каждый получатель письма увидит все email-адреса, на которые было выслано это письмо
$subject
(строка) тема сообщения
$message
(строка) текст сообщения, по умолчанию text/plain, это значит, что HTML-теги не поддерживаются, о том, как включить их поддержку, смотрите в примерах
$headers
(строка|массив) заголовки сообщения
$attachments
(строка|массив) вложения к письму, нужно указывать полный путь к файлам на сервере. Для того, чтобы вложить несколько файлов, используйте массив, либо строку, где путь к каждому файлу начинается с новой строки

Примеры

Обычная отправка письма

wp_mail( '[email protected]', 'Какая-то тема', 'Какое-то сообщение' );

Изменение имени и email отправителя

В WordPress по умолчанию в качестве отправителя письма выставляется «WordPress»,а в качестве его email «[email protected]».

Я уже писал пост о том, как изменить стандартное имя и email отправителя для всех писем, отправляемых с блога на WordPress, а сейчас рассмотрим пример только для конкретного письма.

Для этого нам нужно передать параметр $headers.

wp_mail(
	'[email protected]',
	'Какая-то тема',
	'Какое-то сообщение',
	array(
		'From: Миша <[email protected]>'
	)
);

Использование HTML-тегов в письме, фильтр wp_mail_content_type

Для того, чтобы использовать HTML-теги в тексте сообщения, нужно изменить content-type письма на text/html, а это можно сделать двумя способами.

Это можно сделать двумя способами.

Через фильтр – в таком случае HTML-теги станет возможно использовать в любых письмах, отправляемых с блога.

add_filter( 'wp_mail_content_type', 'true_content_type' );
 
function true_content_type( $content_type ) {
	return 'text/html';
}

Не знаете, куда вставлять код?

Второй способ – указать заголовки уже при отправке конкретного письма. Тут мы также и устанавливаем кодировку письма.

wp_mail(
	'[email protected]',
	'Какая-то тема',
	'Какое-то сообщение', 
	array(
		'Content-type: text/html; charset=utf-8'
	)
);

Изменение кодировки письма, фильтр wp_mail_charset

Кодировка письма по умолчанию соответствует кодировке блога, но ее тоже можно изменить через заголовки (предыдущий пример) или через фильтр:

add_filter( 'wp_mail_charset', 'true_mail_charset' );
 
function true_mail_charset( $content_type ) {
	return 'utf-8';
}

Не знаете, куда вставлять код?

В предыдущем примере (и по умолчанию тоже) WordPress отправляет письма юникодом, но таким способом вы спокойно можете изменить кодировку например на Windows-1251.

Отправка письма с вложениями

$upload_dir = wp_upload_dir();
 
$attachments = array(
	$upload_dir[ 'path' ] . '/file-1.png',
	WP_CONTENT_DIR . '/uploads/file-2.txt'
);
 
wp_mail( '[email protected]', 'Письмо с вложениями', 'Вложения приложены', array(), $attachments );

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Если вам нужна помощь с сайтом или разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда будем рады вам помочь!

Отсылка от двух до нескольких писем на почту.

Теги:
php,
mail,
несколько адресатов,
отправка форм

В этой статье мы разберем то, как можно отсылать данные с формы на две, а то и больше e-mail адресов.

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

Первый — когда получатели видят адреса всех других получателей этого письма. В плане написания кода этот вариант куда проще второго. Но его существенным недостатком является отсутствие конфиденциальности e-mail других получателей.

Второй — каждый получает свою копию письма, где в качестве получателя будет указано только он сам. В некоторых случаях предпочтительнее именно он.

Рассмотрим эти способы подробнее.

Способ первый. Общие получатели.

Для того, чтобы отправить данные из формы на два адреса этим способом, вам нужно в качестве первого аргумента функции mail указать эти адреса через запятую.

Возьмем для примера код из нашей статьи «Простая форма связи своими руками».

Всё, что нам нужно сделать, это добавить новое поле в форму, которое будет задавать второй e-mail адрес получателя:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
	<title>Страница</title>
	<link rel="stylesheet" href="/../css/template.css" type="text/css" />
</head>
<body>
	<form action="send.php" method="get">
		<input type="text" placeholder="Введите сюда e-mail" name="e-mail"><br>
		<input type="text" placeholder="Введите сюда второй e-mail" name="e-mail2"><br>
		<input type="text" placeholder="Введите сюда ваше имя" name="name"><br>
		<input type="submit" value="Нажмите, чтобы отправить письмо">
	</form>
</body>
</html>

И изменить обработчик:

<?php
	//Получаем данные из глобальной переменной $_GET, так как мы передаем данные методом GET
	$name = $_GET['name']; // Вытаскиваем имя в переменную
	$email1 = $_GET['e-mail']; // Вытаскиваем почту в переменную
	$email2 = $_GET['e-mail2']; // Вытаскиваем почту в переменную
	$message = "Поздравляем, $name, отправка сообщений на почту $email работает"; // Формируем сообщение, отправляемое на почту
	$to = "$email1, $email2"; // Задаем получателя письма
	$from = "noreply-site.web.cofp.ru"; // От кого пришло письмо
	$subject = "Письмо с примера простой формы сайта web.cofp.ru"; // Задаем тему письма
	$headers = "From: $from\r\nReply-To: $to\r\nContent-type: text/html; charset=utf-8\r\n"; // Формируем заголовок письма (при неправильном формировании может ломаться кодировка и т.д.)
	if (mail($to, $subject, $message, $headers)) { // При помощи функции mail, отправляем сообщение, проверяя отправилось оно или нет
		echo "<p>Сообщение успешно отправлено</p>"; // Отправка успешна
	}
	else {
		echo "<p>Что-то пошло не так, как планировалось</p>"; // Письмо не отправилось
	}
?>

Стоит обратить внимание на строчку 5, в которой мы получаем второй адрес и строчку 7, где мы формируем список получателей письма (у нас их двое в данном случае).

Результат работы этого скрипта можно посмотреть на демо-странице:

Соответственно, если вы хотите посылать сообщение сразу по нескольким адресам, все эти почты нужно указывать через запятую. Насколько мы знаем, никаких ограничений на количество получателей нету, но в этом лучше убедиться вам самим.

Способ второй. Анонимные получатели

Суть этого метода заключается в том, что по каждому адресу, на который необходимо отправить письмо отсылается своя копия письма.

Как можно понять такой способ не очень предпочтителен, если вам необходимо разослать письма 100 людям или более, так как скорее всего на сервере стоит ограничение на количество вызываемых функций mail в определенный промежуток времени. Поэтому во время рассылок, учитывают это время и делают перерывы, то есть добавляются какие-то таймеры или ещё что-то. В случае если вам нужно отправлять данные с формы, такой вариант не подойдет для большого количества e-mail  адресов.

Рассмотрим пример кода для двух адресов, форма у нас будет выглядеть так же, как и в первом способе. Напоминаем, что мы взяли рабочий пример из статьи «Простая форма связи своими руками». Добавили в форму ещё одно поле, которое у нас будет отвечать за адрес второго получателя.

Обработчик для передачи сообщения двум людям будет выглядеть так:

<?php
	//Получаем данные из глобальной переменной $_GET, так как мы передаем данные методом GET
	$name = $_GET['name']; // Вытаскиваем имя в переменную
	$to1 = $_GET['e-mail']; // Вытаскиваем почту в переменную
	$to2 = $_GET['e-mail2']; // Вытаскиваем вторую почту в переменную
	$message = "Поздравляем, $name, отправка сообщений на почту $email работает"; // Формируем сообщение, отправляемое на почту
	$from = "noreply-site.web.cofp.ru"; // От кого пришло письмо
	$subject = "Письмо с примера простой формы сайта web.cofp.ru"; // Задаем тему письма
	$headers = "From: $from\r\nReply-To: $to\r\nContent-type: text/html; charset=utf-8\r\n"; // Формируем заголовок письма (при неправильном формировании может ломаться кодировка и т.д.)
	if (!mail($to1, $subject, $message, $headers)) {
		echo "Отправить сообщение на почту $to не удалось";
	}
	if (!mail($to2, $subject, $message, $headers)) {
		echo "Отправить сообщение на почту $to не удалось";
	}
?>

Результат работы этого способа смотрите на демо-странице(отличается от первой):

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

Html шаблон письма.

— как сделать(лучше взять готовый), как отправить. Примеры

. скачать

.

  • Что такое

    Html шаблон письма

    Html шаблон письма — это полноценное красивое письмо, которое приходит к вам на почту.

    Примеры

    Html шаблонов письма

    Этот Html шаблон для письма я написал… даже не помню когда. Простой лаконичный!
    Не обращайте внимания, что он не супер-пупер дизайнерский! Если вы сможете разобраться — как работает(вместе с формой и php) Html шаблон письма — вам не важно будет какой шаблон применять!
    Шаблон — это всего лишь обертка.

    А обертку -всегда можно поменять!

    Эту картинку, скриншот, можно увеличить в отдельном окне нажмите по нему!

    Примеры

    Html шаблонов письма

    Второй пример — Html шаблона письма — этим я пользуюсь сейчас(в момент написания данных строк).
    Эту картинку, скриншот, можно увеличить в отдельном окне нажмите по нему!

  • Html шаблон письма с php и формой отправки

    17.01.2021

    Сама тема Html шаблон письма — скучная, вам нужно всего лишь один раз составить этот шаблон и далее вы благополучно об этом можете забыть!

    Смысла понимания процесса создания Html шаблон письма — я вообще не вижу, это просто забивание головы одноразовой информацией. Сознание Html шаблона письма — немного отличается от стандартного html кода — я думаю, что этого в принципе и достаточно!

    В сети вы всегда сможете найти огромное количество Html шаблонов письма.

    Самое интересное — это использование этих шаблонов вместе с формой и php обработчиком!

    Что мы будем делать!?

    Возьмем ранее приведенный шаблон(как я уже сказал — вы сомжете взять любой шаблон из сети и использовать в нашем коде.).

    Эту картинку, скриншот, можно увеличить в отдельном окне нажмите по нему!

    И возьмем форму

    Оттуда же возьмем код php для отправки и все это скрестим!

    Прежде чем приступать к отправке Html шаблона письма — разберем:

    Алгоритм отправки

    Html шаблона письма

    У вас должна быть форма форма, в которой будут заполняться необходимые поля.

    Далее нам потребуется обработать переданные данные.

    Заполнить этими переменными Html шаблон письма.

    И только потом отправить с помощью функции mail

    Перейдем к

    Html шаблону письма.

    Необходимо заполнить/изменить все данные, которые указаны ниже, чтобы Html шаблон письма смог отправиться по адресу!

    Естественно, на что нужно обратить особое внимание — на адрес емайла — он должен быть настоящим.

    Не знаю, как будет работать оправка сообщения у вас на сайте, но на нашем хостинге, вы не сможете отправить сообщение с несуществующего емайла.

    Заполняем переменные для

    Html шаблона письма

    $email_admin = ''; // ваш рабочий емайл

    $name_admin = 'BOSS'; // ваше имя

    $your_site = 'https://dwweb.ru/'; // https://dwweb.ru/

    $name_site = 'DWWEB.RU'; // например DWWEB.RU

    $begin_year = '2015'; // год создания сайта

    $subject = "Новое сообщение на сайте $name_site";

    Скачать

    Html шаблон письма с php и формой отправки

    Скачать

    P.S.

    В связи с тем, что страниц с формами, с разными формами размножились как кролики — нам нужно, какой-то идентификатор для каждой страницы и сделаем отдельный тег, который будет собирать все формы на странице.

    Дизайн и редактор кода — Twilio

    Добавление изображений с помощью редактора дизайна

    Чтобы загрузить изображение:

    1. Перейдите на вкладку Build и нажмите Добавить модули .
    2. Выберите модуль «Изображения» и перетащите его в область содержимого.

      Откроется окно, в котором вы можете загрузить изображения в свою библиотеку изображений.
    3. Перетащите изображение, которое вы хотите использовать, из ваших файлов или выберите Выберите изображения для загрузки.

    Чтобы вставить изображение:

    1. Перейдите на вкладку Build и нажмите Добавить модули .
    2. Перетащите модуль изображений в область содержимого.

      Откроется окно, в котором вы можете выбрать изображения из библиотеки изображений.
    3. Выберите изображение, которое хотите добавить к своему электронному письму.

      Откроется вкладка «Сведения об изображении».
    4. Вставьте изображение в электронное письмо, нажав Сохранить изображение .

    Использование тегов подстановки в редакторе дизайна

    Чтобы добавить тег замены к своему электронному письму:

    1. Перейдите на вкладку Теги .
    2. Найдите тег, который вы хотите добавить к своему электронному письму, и щелкните значок копия .
    3. Вставьте тег в модуль.

    При копировании и вставке тега из вкладки Теги автоматически добавляется значение по умолчанию. Значения по умолчанию поддерживаются только ключевым словом insert .По этой причине теги со значениями по умолчанию будут автоматически сохраняться с другим синтаксисом. Дополнительные сведения о работе со значениями по умолчанию и ручками см. В разделе Добавление динамического содержимого с помощью ручек в маркетинговых кампаниях.

    Данные испытаний с помощью редактора дизайна
    1. Чтобы получить доступ к предварительному просмотру тестовых данных, откройте дизайн в редакторе дизайна и выберите вкладку Предварительный просмотр .
    2. При активной вкладке Предварительный просмотр слева вы увидите кнопку {} Показать тестовые данные .Нажмите эту кнопку, чтобы открыть окно тестовых данных.
    1. Теперь у вас будет параллельное представление окна кода и вашего дизайна.

    Вы можете поместить данные для контакта в окно кода. Обратите внимание, что данные должны быть в формате JavaScript Object Notation (JSON). JSON — это способ структурирования данных в виде набора пар ключ / значение. Например, если вы используете тег подстановки first_name , first_name является ключом, а имя клиента — значением.Эти ключи также можно рассматривать как переменные. Как переменная в алгебре, эти переменные представляют значение, которое вы еще не знаете. Следующий пример клиента предоставляется в формате JSON, с которым вы можете поэкспериментировать.

      {
      "first_name": "Тира",
      "last_name": "Мису",
      "электронная почта": "[email protected]",
      "alternate_emails": "[email protected]",
      "address_line_1": "Н. Реальный пр., 1234",
      "address_line_2": "Люкс 200",
      "город": "Денвер",
      "state_province_region": "CO",
      "postal_code": 80202,
      "страна": "США",
      "phone_number": "+15555555555",
      "Sender_Name": "Заказы",
      "Sender_Email": "orders @ example2.com ",
      "Sender_Address": "1234 N. Exist St.",
      "Sender_City": "Портленд",
      «Sender_State»: «ИЛИ»,
      «Sender_Zip»: 97227,
      "Sender_Country": "США"
    }
      
    1. Когда у вас есть тестовые данные, вы должны увидеть, что все теги подстановки, для которых данные присутствуют, отображаются правильно.

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

    Чтобы просмотреть сообщение электронной почты или шаблон, нажмите кнопку Предварительный просмотр в верхнем левом углу.

    Вы можете переключаться между режимами предварительного просмотра на мобильном устройстве и на рабочем столе, щелкая значок рабочего стола или мобильного телефона над областью содержимого.

    Чтобы просмотреть текстовую версию электронного письма или шаблона, щелкните значок T . В этом режиме предварительного просмотра вы можете редактировать текстовое содержимое электронного письма или шаблона, нажав кнопку Редактировать обычный текст .

    При предварительном просмотре электронной почты вы также видите предварительный просмотр имени От, темы и текста предварительного заголовка, который вы выбрали.

    Редактирование заголовка HTML

    В элементе HTML вы можете определить любые метаданные, которые вы хотели бы включить в свой адрес электронной почты или шаблон.Например, вы можете использовать элемент для определения любых пользовательских шрифтов или стилей CSS, которые вы хотите использовать.

    Чтобы отредактировать HTML-заголовок электронного письма или шаблона:

    1. Перейдите на вкладку Build на левой панели инструментов и перейдите к меню Advanced .
    2. Разверните опцию Изменить заголовок HTML .
    3. Щелкните Редактировать , чтобы начать редактирование заголовка HTML.

      Появится окно, в котором вы можете вставить свой собственный HTML-код.
    4. Когда вы закончите вносить изменения, нажмите кнопку Обновить .
    Добавление пользовательских шрифтов с помощью заголовка HTML

    Чаще всего пользователи добавляют пользовательские шрифты, используя тег для ссылки на веб-шрифт, размещенный где-то в Интернете. Например, Google Fonts.

    Как отправить электронную почту с помощью PHP с помощью SendGrid и Mezzio

    Электронная почта как никогда важный инструмент коммуникации. Чтобы помочь вам лучше использовать электронную почту, я собираюсь показать вам, как отправлять электронную почту с помощью PHP Mezzio framework и Twilio SendGrid API.

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

    Хороший звук? Приступим.

    Краткий обзор приложения

    Чтобы сделать это руководство более содержательным, представьте, что код, который мы напишем, является частью вымышленного интернет-магазина электронной коммерции, созданного с помощью Mezzio, под названием The Little PHP Shop ; в частности, деталь сразу после того, как покупатель совершит покупку.На этом этапе пользовательского потока клиенту отправляется электронное письмо с благодарностью за покупку и включает счет-фактуру в формате PDF для его записей.

    Мы собираемся создать класс Handler для отправки электронного письма после покупки, которое будет получать сведения о покупке из заказа, выполненного клиентом. С этой информацией о покупке класс Handler затем будет использовать несколько классов в PHP API SendGrid для создания и отправки электронного письма с подтверждением покупки.

    Из них наиболее важными являются: `SendGrid \ Mail \ Mail` и` \ SendGrid`.SendGrid \ Mail \ Mail — это объект, в котором хранятся все свойства сообщения электронной почты, которое мы будем отправлять через SendGrid. Объект SendGrid формирует транспортный уровень, облегчая отправку электронных писем через SendGrid.

    Предварительные требования

    Для выполнения этого руководства вам потребуются следующие 4 вещи в вашей локальной среде разработки:

    1. Аккаунт SendGrid
    2. PHP 7.4 с установленными и включенными расширениями cURL, mbstring и OpenSSL
    3. Composer глобально установлен
    4. cURL

    Подмости для приложения Mezzio

    Сначала нам нужно создать базовое приложение.Для этого мы, как всегда, будем использовать Скелет Меццио, который сделает это за нас. После того, как базовое приложение будет скаффолдингом, мы перейдем во вновь созданный каталог проекта. Затем выполните следующие команды в своем терминале, следуя подсказкам для первой:

    Установите необходимые зависимости

    Когда проект готов, нам нужно добавить 3 дополнительных зависимости для завершения проекта. Это:

    Чтобы установить их, выполните в терминале следующую команду:

    Инициализировать PHP Dotenv

    После установки зависимостей мы загружаем PHP Dotenv, чтобы он читал переменные, установленные в `.env` и сделать их доступными для PHP как переменные среды. Для этого вставьте следующий код в `public / index.php` сразу после` require ‘vendor / autoload.php’; `.

    Добавьте данные своей учетной записи SendGrid

    Теперь вам нужно предоставить приложению ключ API SendGrid. Для этого после входа в SendGrid перейдите в «Настройки -> Ключи API». Оказавшись там:

    1. Нажмите « Create API Key », чтобы создать API-ключ
    2. Дайте новому ключу API имя, примите разрешение ключа API по умолчанию « Full Access » и нажмите « Create and View »

    После создания ключа API щелкните и скопируйте ключ, а затем щелкните « Done »

    После этого добавьте в файл еще два ключа: `SENDGRID_DEFAULT_SENDER_ADDRESS` и` SENDGRID_DEFAULT_SENDER_NAME`.Как видно из названий, это адрес и имя электронной почты, которые будут использоваться для любых писем, отправленных из нашего приложения, если они не будут переопределены.

    Примечание: Какой бы адрес электронной почты вы ни использовали, его необходимо подтвердить. Для этого в Аутентификация отправителя убедитесь, что он указан как «Проверено» в таблице «Проверка одного отправителя».

    Установить детали конфигурации почты приложения

    В дополнение к ключу API SendGrid мы собираемся сохранить еще несколько глобальных настроек конфигурации почты.В частности, мы собираемся установить из и ответ на адрес электронной почты и имя , которые мы будем использовать в каждом электронном сообщении. Таким образом, нам не нужно устанавливать их каждый раз.

    Мы также собираемся создать два шаблона основного текста сообщений электронной почты: один для обычных текстовых сообщений, а другой — для сообщений в формате HTML. Для этого в config / autoload создайте новый файл с именем mail.global.php и добавьте в него следующий код.

    Создание класса для создания экземпляра объекта почты

    Установив ключевые детали конфигурации приложения, давайте теперь создадим класс, который будет создавать экземпляр базового объекта Mail с установленными по умолчанию свойствами.Для этого в новом каталоге src / App / src / Mailer создайте новый файл с именем SendGridMailMessageFactory.php и добавьте в него приведенный ниже код.

    Когда класс вызывается, ему будет предоставлен доступ к контейнеру DI приложения, из которого он получит детали конфигурации, которые мы сохранили в config / autoload / mail.global.php.

    После этого он создаст экземпляр нового объекта `SendGrid \ Mail \ Mail` и установит ответ из и на подробности , передав соответствующие данные конфигурации в вызовы setFrom и setReplyTo Mail. `методы соответственно.После этого возвращается созданный объект Mail.

    Однако, чтобы использовать его, он должен быть зарегистрирован в контейнере DI. Для этого в `src / App / src / ConfigProvider` добавьте следующую запись к элементу` factory` в массиве, возвращаемом методом `getDependencies`.

    Создайте обработчик для отправки электронной почты

    Теперь нам нужно создать класс Handler для составления и отправки электронных писем. Для этого мы воспользуемся инструментами интерфейса командной строки Mezzio, доступными через Composer, выполнив команду ниже.

    Выполнение приведенной выше команды делает для нас четыре вещи:

    1. Создает новый класс обработчика, src / App / Handler / EmailSenderHandler.php
    2. Создает фабричный класс для создания экземпляра класса обработчика, `src / App / Handler / EmailSenderHandlerFactory.php`
    3. Создает файл шаблона (`src / App / templates / app / email-sender.html. `), , который нам не нужен . В имени файла `` определяется механизмом шаблонов, который вы выбрали на этапе `create-project`.
    4. Регистрирует новый класс обработчика как службу в контейнере DI (внедрение зависимостей), добавляя запись в файл config / autoload / mezzio-tooling-factoryies.global.php.

    Рефакторинг обработчика для отправки электронных писем

    Создав `EmailSenderHandler.php`, нам нужно реорганизовать его, чтобы он мог отправлять электронные письма. Для этого мы сначала проведем рефакторинг конструктора EmailSenderHandler, заменив параметр TemplateRendererInterface тремя новыми параметрами. Они инициализируют три новые переменные-члены класса:

    • Объект `\ SendGrid \ Mail \ Mail`
    • Объект \ SendGrid.
    • Массив, содержащий необходимые сведения о конфигурации

    В приведенном ниже примере вы можете увидеть измененный конструктор вместе с соответствующими переменными-членами класса.Замените существующую переменную члена класса и конструктор этим кодом.

    Примечание: убедитесь, что вы удалили теперь неиспользуемый оператор использования для ` TemplateRendererInterface `.

    Затем нам нужно провести рефакторинг метода handle. Замените существующее содержимое метода handle `EmailSenderHandler` приведенным ниже кодом, а затем давайте рассмотрим, что он делает.

    Он начинается с использования `$ request-> getParsedBody ()` для получения любых параметров, предоставленных в теле запроса, который вернет ассоциативный массив, инициализируя `$ details`.При наличии доступных параметров он вызывает метод addTo объекта SendGrid \ Mail \ Mail для установки получателя электронной почты, передавая адрес электронной почты и имя получателя в первых двух аргументах и ​​массив подстановок в третьем аргументе.

    Замены позволяют настраивать сообщения электронной почты для каждого получателя. В текстовых сообщениях электронной почты любая строка, сразу окруженная дефисами, например, `-first_name-`, является заменой. В электронных письмах HTML используется синтаксис Handlebars, заключающий строки в двойные круглые скобки, e.g., `{{first_name}}`.

    Затем задается тема сообщения и добавляется текст и тело сообщения в формате HTML. После этого наше электронное письмо готово к отправке, поэтому мы используем объект `SendGrid`,` $ this-> mailer`, чтобы отправить его, инициализируя новую переменную `$ response` с ответом от попытки отправить сообщение. . Наконец, мы возвращаем объект JsonResponse, содержащий код состояния и тело ответа.

    Примечание: Код состояния может быть одним из 202, 400, 401, 403 и 413.Сообщение будет содержать только значение, указывающее, что пошло не так, если код состояния не равен 200.

    Рефакторинг метода __invoke EmailSenderHandlerFactory

    Теперь, когда мы завершили рефакторинг EmailSenderHandler, нам нужно провести рефакторинг EmailSenderHandlerFactory, чтобы он правильно создавал экземпляр EmailSenderHandler. Для этого замените существующее определение его метода `__invoke` следующим кодом.

    Это извлекает объект `\ SendGrid \ Mail \ Mail` из контейнера DI, предварительно инициализированный отправителем и ответом на детали электронной почты, и инициализирует новый объект с именем` $ message`.Затем он создает новый объект SendGrid с именем $ mailer для отправки почтового сообщения. Наконец, он извлекает конфигурацию почты из конфигурации приложения. Затем он использует их для инициализации и возврата объекта EmailSenderHandler.

    Обновить таблицу маршрутизации

    Со всеми этими изменениями осталось сделать одно последнее изменение, прежде чем мы сможем протестировать код и отправить электронное письмо. Мы должны обновить таблицу маршрутизации, чтобы маршрут по умолчанию использовал наш новый класс Handler в качестве обработчика маршрута вместо `HomePageHandler`.Для этого замените определение маршрута по умолчанию в config / routes.php следующим примером.

    Отправить первое электронное письмо

    Пришло время отправить первое электронное письмо. Для этого сначала запустите приложение, выполнив в терминале команду ниже.

    Затем, используя cURL, сделайте GET-запрос к `http: // localhost: 8080`, как в примере ниже, заменив значения в угловых скобках соответствующими деталями для вашей электронной почты.

    Вы должны увидеть вывод `{« status »: 202,« message »:» »}` на терминал, и вы должны получить электронное письмо, которое выглядит как на изображении ниже.

    Примечание: Вместо этого вы можете использовать свой браузер или другой инструмент тестирования, например Postman .

    Использовать шаблоны транзакционной электронной почты вместо строк шаблона

    Хотя нам удавалось отправлять электронные письма как с простым текстом, так и с телом HTML, тем не менее, как мы это делали, далеко не идеально. Для каждого отправляемого нами электронного письма — а наше приложение может в конечном итоге отправить довольно много — нам нужно будет добавить для них простой текст и тело HTML.

    Но хранение определений тела электронной почты в коде возлагает большую часть усилий на команду разработчиков. Однако, по крайней мере, по моему опыту, часто бывает, что другие команды, часто маркетологи, создают и поддерживают шаблоны электронной почты.

    Итак, по этой причине и поскольку это ускорит разработку и позволит распределить нагрузку между несколькими командами, мы собираемся провести рефакторинг приложения для использования шаблонов транзакционных писем. Они могут создаваться и поддерживаться через пользовательский интерфейс SendGrid членами группы, которые могут иметь небольшой технический опыт или вообще не иметь его, а не в коде.

    Если вы не слышали о них, глоссарий SendGrid определяет их следующим образом:

    > Шаблоны транзакционной электронной почты — это предварительно закодированные макеты электронной почты, которые маркетологи, дизайнеры и разработчики могут использовать для быстрого и простого создания кампаний транзакционной электронной почты. Шаблоны транзакционных писем SendGrid позволяют как нетехническим, так и техническим специалистам вносить изменения в электронную почту, которую получают их получатели, в режиме реального времени.

    Для этой статьи нам понадобится только довольно простой. Для этого следуйте инструкциям в документации SendGrid и создайте такую, которая будет содержать только один текстовый модуль.Затем для основного текста используйте текст ниже.

    Обратите внимание, что в письме 6 замен:

    • `first_name`: Имя клиента
    • `last_name`: Фамилия клиента
    • `sender_name`: Название интернет-магазина (The Little PHP Shop)
    • `sender_state`: Состояние интернет-магазина
    • `sender_country`: Страна интернет-магазина
    • `support_email`: Адрес электронной почты службы поддержки, который клиенты могут использовать для получения послепродажной поддержки.

    Учитывая это, нам необходимо сделать эту информацию доступной для нашего приложения. Имя и фамилия клиента у нас уже есть. Остальные 4 замены будут глобальными, поэтому, как и раньше, мы добавим конфигурацию ниже в ` config / autoload / mail.global.php ` после элемента` templates`.

    Создав новый файл конфигурации, в методе handle `EmailSenderHandler` замените два вызова` $ this-> mail-> addContent () на следующий код.

    Два вызова метода добавляют сведения об отправителе и адрес электронной почты поддержки в качестве глобальной замены. Эти замены применяются к тексту сообщения электронной почты перед любыми другими заменами, но отменяются, если есть замены с тем же ключом для получателя электронной почты.

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

    Скопируйте его и сохраните в `config / autoload / mail.global.php в новом элементе с ключом template_id, а затем удалите plain и html. По завершении элемент `mail / templates` возвращенного массива будет выглядеть, как в приведенном ниже коде, где` `будет заменен идентификатором вашего шаблона.

    После обновления конфигурации нам нужно добавить вызов метода setTemplateId в MailSenderHandler в метод handle, передав идентификатор шаблона, который мы только что добавили в config / autoload / mail. .global.php`. Вы можете увидеть пример в приведенном ниже коде.

    Давайте проверим изменения

    Как и раньше, используя cURL, сделайте GET-запрос к http: // localhost: 8080, чтобы проверить правильность работы изменений. Вы должны увидеть вывод `{« status »: 202,« message »:» »}` на терминал, как в предыдущем примере. В своем почтовом ящике вы должны увидеть красивое письмо с замененными заменами, как на скриншоте ниже.

    Прикрепите счет в формате PDF

    Теперь, когда мы используем динамические шаблоны, давайте прикрепим счет в формате PDF, о котором мы говорили в верхней части статьи.Чтобы сэкономить ваше время и усилия на поиск или создание его самостоятельно, я создал образец счета в формате PDF, который вы можете использовать в этой статье. Сохраните его в каталоге «data» приложения.

    Примечание: Все данные в нем, кроме отдельных позиций, полностью вымышлены.

    Чтобы прикрепить счет-фактуру, нам нужно использовать метод addAttachment в Mail, который вы можете увидеть в следующем примере кода. Метод принимает пять аргументов, но мы предоставляем только первые четыре.Это:

    1. Объект `Attachment` или строка в кодировке Base64 . Если значение этого параметра не закодировано в base64, метод сделает это за нас.
    2. Тип пантомимы вложения (теперь известный как тип носителя).
    3. Имя файла вложения. Это имя, под которым файл будет сохранен по умолчанию, если пользователь не изменит его.
    4. Распределение содержания вложения . Если вы не знакомы с Content-disposition, inline content-disposition означает, что вложение должно автоматически отображаться при отображении сообщения, а attachment content-disposition означает, что вложение не отображается автоматически и требует некоторого форма действия пользователя для его открытия

    В приведенном ниже примере кода метод PHP file_get_contents считывает содержимое файла в новую переменную с именем `$ invoice`. Затем PDF-файл прикрепляется к сообщению путем вызова метода addAttachment.

    Здесь мы:

    • Передайте содержимое счета, которое будет закодировано в кодировке Base64
    • Установите mimetype на `application / pdf`, поскольку мы прикрепляем файл PDF.
    • Установите вымышленное имя файла счета-фактуры, которое клиент мог разумно ожидать; и
    • Установить расположение содержимого на «вложение»

    Теперь, когда мы закончили эти изменения, давайте проверим, работают ли они. Запустите тот же запрос cURL, который мы выполняли два предыдущих раза.Затем в почтовом ящике вы должны увидеть красивое письмо с примером счета в формате PDF, видимым при просмотре письма.

    Вот как отправлять электронную почту с помощью PHP, используя SendGrid и Mezzio

    Хотя мы лишь слегка коснулись того, что возможно при отправке электронных писем с помощью SendGrid и Mezzio, теперь вы можете отправлять электронные письма с простым текстом и телом HTML, а также с вложением. Вы также узнали, как использовать шаблоны транзакций и замены, которые можно задать глобально и для каждого получателя.

    Я настоятельно рекомендую вам ознакомиться с документацией библиотеки PHP, чтобы узнать, что еще доступно, например, планирование отправки электронной почты, прикрепление файла из Amazon S3, добавление заголовков и добавление разделов и категорий.

    Мэтью Сеттер — редактор PHP в команде Twilio Voices и, естественно, разработчик PHP. Он также является автором книги Mezzio Essentials . Когда он не пишет PHP-код, он редактирует отличные статьи по PHP здесь, в Twilio.С ним можно связаться по телефону:

    .

    Кодировка символов типа содержимого в электронной почте HTML


    Наши подписчики и подписчики задавали много вопросов о том, как почтовые клиенты устанавливают тип содержимого в своих электронных письмах HTML. Как вы, возможно, уже знаете, тип содержимого играет важную роль в способе отображения электронной почты, особенно в отношении специальных символов на нелатинских языках или при копировании из текстового редактора, такого как Microsoft Word.

    Короче говоря, все почтовые клиенты игнорируют тип содержимого, определенный в вашем метатеге. Вместо этого они читают его из значения типа содержимого, которое находится в заголовке вашего электронного письма.

    Сервер, отправляющий вашу электронную почту, автоматически установит значение типа символа в заголовке. Вы можете изменить это значение, но вам потребуется прямой доступ к почтовому серверу. Самым безопасным решением является преобразование всех ваших специальных символов в объекты HTML, и мы создали бесплатный онлайн-инструмент , который поможет вам в этом процессе.

    Попробуйте конвертер символов

    Что такое Content-Type?

    Content-type сообщает веб-браузеру или почтовому приложению, как интерпретировать текстовые символы в вашем HTML или теле письма. Самые популярные наборы символов — UTF-8 и ISO-8859-1.

    Для иллюстрации возьмем следующий код:

      

    Символы UTF-8: ö ü ä

    UTF-8 китайский: 激 光 這

    Символы объекта HTML: & # 28450; & # 23383;

    Вот как это отображается с использованием каждого набора символов:

    Как видно выше, китайские символы не представлены в наборе символов ISO-8859-1.Это связано с тем, что ISO-8859-1 включает только символы языка на основе латиницы. В результате получается набор беспорядочного текста, который является интерпретацией символов ISO-8859-1.

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

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

    Инструмент проверки типа содержания Campaign Precheck.

    Как это вписывается в электронные письма в формате HTML?

    При разработке веб-сайтов мы можем указать набор символов в метатеге, используя этот код:

        

    Почтовые клиенты отображают электронные письма, используя одну и ту же предпосылку; он будет отображать электронное письмо в зависимости от типа содержимого. Однако почтовые клиенты читают значение типа содержимого, установленное в заголовке электронной почты, и игнорируют метатег в HTML.

    Как установить Content-Type в заголовке электронной почты

    Сервер, отправляющий электронное письмо, устанавливает содержимое заголовка. Заголовок содержит информацию о том, кто получает электронное письмо («кому»), кто отправляет электронное письмо («от»), дату и время. Пользователи могут видеть часть этой информации вверху каждого сообщения при просмотре его в почтовом клиенте.

    Вот фрагмент заголовка электронного письма (обратите внимание на значение типа содержимого):

      Дата: среда, 15 декабря 2010 г. 12:45:55 -0700
    Кому: test @ test.ком
    От: [email protected]
    Тема: UTF-8
    Идентификатор сообщения: 
    X-приоритет: 3
    X-Mailer: EOAMailer 5.0.0
    MIME-версия: 1.0
    Кодирование передачи содержимого: 8 бит
    Тип содержимого: текст / html; charset = "UTF-8"  

    Результаты тестирования почтового клиента

    Мы отправили приведенный выше пример кода в тестовую электронную почту всем почтовым клиентам, которые поддерживает Email on Acid. Почти каждый клиент отображает текст на основе значения типа содержимого, установленного в заголовке электронной почты. Gmail — единственный клиент, который автоматически преобразует ваш текст в UTF-8, независимо от того, что вы указали в заголовке.

    Вот результаты тестов:

    Клиенты Content-Type
    AOL
    Outlook 2003, 2007 и 2010
    Lotus Notes 8 и 8.5
    Yahoo
    Thunderbird
    iPad
    iPhone Mail
    Android Mail
    Берет тип содержимого из заголовка вашего электронного письма
    Gmail
    Android Gmail
    iPhone Gmail
    iPad Gmail
    Преобразует тип содержимого в UTF-8

    Мы заметили одно интересное действие: веб-клиенты преобразуют ваш текст в набор символов типа содержимого перед его отображением в браузере.Мы смогли проверить это, просмотрев, какой тип контента они устанавливали в своих метатегах. Как оказалось, большинство из них используют UTF-8.

    Решение

    Поскольку поставщики услуг электронной почты (ESP) устанавливают тип содержимого в заголовке, мы добавляем еще один уровень сложности в нашу разработку электронной почты. Вот несколько способов решить эту проблему:

    Вариант 1:
    Обратитесь к своему поставщику услуг электронной почты (ESP) и спросите их, какой тип содержимого они задают в заголовке при отправке электронных писем.Как только вы узнаете тип содержимого, используйте это значение в своем метатеге HTML при создании электронного письма.

    Вариант 2:
    Преобразуйте все специальные символы в их HTML-объекты, и вам не придется беспокоиться о заголовке Content-Type. Например, следующий символ «漢» имеет значение объекта HTML «& # 28450;». Чтобы помочь вам с преобразованием, мы создали бесплатный онлайн-инструмент, который преобразует все ваши специальные символы за вас. Просто воспользуйтесь этим инструментом преобразования, прежде чем отправлять электронную почту.

    Заключительные слова о типе содержимого

    Всегда важно проверять наборы символов, используя как Internet Explorer, так и Firefox, особенно если вы используете нелатинские символы или копируете и вставляете контент из текстового редактора, такого как Microsoft Word.

    Когда вы отправляете тестовую электронную почту через Email on Acid, наши серверы настроены на отправку вашей электронной почты с использованием Content-Type UTF-8 каждому из наших поддерживаемых почтовых клиентов.

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

    Попробуйте сегодня

    Этот пост был обновлен 25 января 2019 г. Последний раз он обновлялся в феврале 2017 г. и впервые опубликован в 2011 г.

    Автор: Джон Тис

    Джон Тис (John Thies) — генеральный директор и соучредитель Email on Acid, платформы проверки качества электронной почты перед развертыванием, которая стремится устранить врожденный страх перед нажатием кнопки «Отправить».Он страстный и увлеченный лидер отрасли, который живет, дышит и мечтает об электронной почте (серьезно). Джон также является генеральным директором Cause for Awareness, недавно созданной некоммерческой организации, которая предоставляет другим некоммерческим организациям ресурсы цифрового маркетинга. Он проживает в Денвере, штат Колорадо, с женой и сыном.

    Автор: Джон Тис

    Джон Тис (John Thies) — генеральный директор и соучредитель Email on Acid, платформы проверки качества электронной почты перед развертыванием, которая стремится устранить врожденный страх перед нажатием кнопки «Отправить».Он страстный и увлеченный лидер отрасли, который живет, дышит и мечтает об электронной почте (серьезно). Джон также является генеральным директором Cause for Awareness, недавно созданной некоммерческой организации, которая предоставляет другим некоммерческим организациям ресурсы цифрового маркетинга. Он проживает в Денвере, штат Колорадо, с женой и сыном.

    Сообщения — документация Mailgun API

    из Адрес электронной почты для Из заголовка
    до Электронный адрес получателя (ей).Пример: «Боб » . Вы можете использовать запятые для
    разделить нескольких получателей.
    куб.см То же, что с по , но для CC
    bcc То же, что с по , но для Bcc
    субъект Тема сообщения
    текст Тело сообщения. (текстовая версия)
    HTML Тело сообщения.(HTML-версия)
    amp-html AMP часть сообщения. Пожалуйста, следуйте рекомендациям Google, чтобы составлять и отправлять электронные письма AMP.
    насадка Вложение файла. Вы можете разместить несколько вложений
    ценности. Важно: Вы должны использовать multipart / form-data
    кодировка при отправке вложений.
    рядный Вложение с расположением inline . Может использоваться для
    отправлять встроенные изображения (см. пример).Вы можете разместить несколько встроенных значений .
    шаблон Имя шаблона, хранящегося через API шаблона.
    Для получения дополнительной информации см. Шаблоны
    t: исполнение Используйте этот параметр для отправки сообщения определенной версии шаблона
    т: текст Пройдите да , если вы хотите, чтобы шаблон отображался в текстовой части сообщения в случае отправки шаблона
    o: тег Строка тега.См. Раздел «Теги» для получения дополнительной информации.
    о: дким Включает / отключает подписи DKIM для каждого сообщения.
    Пройдено да , нет , истинно или ложно
    o: срок поставки Желаемое время доставки. См. Раздел Формат даты. Примечание:
    Сообщения можно запланировать максимум на 3 дня в
    будущее.
    o: период оптимизации-доставки Включает оптимизацию времени отправки (STO) для каждого сообщения.Строка должна быть установлена ​​на количество часов в формате [0-9] + h , при этом минимальное значение — 24h , а максимальное — 72h . Это значение определяет временное окно, в котором Mailgun будет запускать алгоритм оптимизации на основе данных о предыдущем взаимодействии данного получателя. Подробнее см. Отправка сообщения с помощью STO. Обратите внимание, что STO доступен только на определенных тарифных планах. См. Www.mailgun.com/pricing для получения дополнительной информации.
    o: локализация часового пояса Включает оптимизацию часового пояса (TZO) для каждого сообщения.Строка должна быть установлена ​​на предпочтительное время доставки в формате HH: mm или hh: mmaa , где HH: mm используется для 24-часового формата без AM / PM, а hh: mmaa используется для 12-часового формата. с AM / PM. Подробнее см. Отправка сообщения с помощью TZO. Обратите внимание, что TZO доступен только на определенных тарифных планах. См. Www.mailgun.com/pricing для получения дополнительной информации.
    o: тестовый режим Включает отправку в тестовом режиме. Пройдите да , если необходимо.См. Отправку в тестовом режиме
    o: отслеживание Включает отслеживание для каждого сообщения, см.
    Сообщения отслеживания для получения подробной информации. Пройти да , нет ,
    истинно или ложно
    o: отслеживание кликов Включает отслеживание кликов для каждого сообщения. Имеет высшее
    приоритет, чем настройка на уровне домена. Пройти да , нет ,
    true , false или html только .
    o: отслеживание-открывается Включает отслеживание открытия для каждого сообщения. Имеет высшее
    приоритет, чем настройка на уровне домена. Пройти да или нет ,
    истинно или ложно
    o: требуются tls

    Если установлено значение True или да это требует, чтобы сообщение было только
    отправлено через соединение TLS. Если соединение TLS не может быть установлено,
    Mailgun не доставит сообщение.

    Если установлено значение False или no , Mailgun все равно будет пытаться обновить
    соединение, но если Mailgun не может, сообщение будет
    доставляется через SMTP-соединение с открытым текстом.

    Значение по умолчанию — False.

    o: пропуск проверки

    Если установлено значение True или да , сертификат и имя хоста будут
    не проверяться при попытке установить соединение TLS и Mailgun
    примет любой сертификат при доставке.

    Если установлено значение False или no , Mailgun проверит сертификат и
    имя хоста. Если какой-либо из них не может быть проверен, соединение TLS
    устанавливаться не будет.

    По умолчанию Ложь .

    ч: X-My-Header h: префикс , за которым следует произвольное значение, позволяет добавлять
    настраиваемый заголовок MIME для сообщения ( X-My-Header
    в этом случае). Например, h: Reply-To , чтобы указать Reply-To.
    адрес.
    v: мой-вар v: префикс , за которым следует произвольное имя, позволяет
    прикрепить к сообщению пользовательские данные JSON.
    См. «Присоединение данных к сообщениям» для получения дополнительной информации.
    переменные-получатели Действительный словарь в кодировке JSON, где ключ — это простой получатель.
    адрес и значение — это словарь с переменными, которые могут быть
    упоминается в теле сообщения.
    Дополнительную информацию см. В разделе «Пакетная отправка».

    Состояние электронной почты HTML в WordPress

    Один вопрос, который мне несколько раз задавали во время работы над WP Offload SES, — это то, как он обрабатывает электронную почту в формате HTML. По умолчанию WordPress отправляет все сообщения электронной почты в виде простого текста, и, хотя сообщения электронной почты с обычным текстом работают лучше, вполне естественно, что люди хотят настроить электронную почту своего сайта для более профессионального вида.

    Что касается WP Offload SES, то ответ относительно прост — все, что вы вставляете в содержимое электронной почты, оно отправит, но если взглянуть на экосистему WordPress в целом, все становится немного сложнее. В статье на этой неделе мы подробно рассмотрим электронные письма в формате HTML в WordPress и передовые методы отправки писем в формате HTML с вашего сайта.

    Что делает хорошее электронное письмо в формате HTML?

    Хорошее электронное письмо в формате HTML — это письмо, которое стабильно работает в большинстве, если не во всех, почтовых клиентах.Он также должен быть доступен и обеспечивать резервные варианты на случай, если получатель не может просматривать электронные письма в формате HTML (в идеале это означало бы включение альтернативы в виде открытого текста).

    HTML в электронных письмах все еще на световые годы отстает от HTML, который вы, возможно, использовали на веб-сайтах. Например — вместо использования div, столы по-прежнему остаются королем. Это во многом благодаря Microsoft Outlook, использующему механизм рендеринга Microsoft Word для отображения электронных писем.

    Можете ли вы представить себе попытку создать хороший макет, который работал бы в нескольких разных версиях Microsoft Word, а также в бесчисленном множестве других почтовых клиентов? Я знаю, что не могу.

    Поскольку все электронные письма используют такой устаревший код, а многие почтовые клиенты обрабатывают вещи несколько иначе, неудивительно, что отзывчивые электронные письма все еще очень популярны. Адаптивные электронные письма можно создавать с помощью комбинации медиа-запросов CSS и продуманного HTML, но, к сожалению, не все клиенты поддерживают медиа-запросы. Имея это в виду, хорошее электронное письмо в формате HTML должно по возможности использовать медиа-запросы и в то же время хорошо выглядеть в полноэкранном режиме у клиентов, которые их не поддерживают.

    Как WordPress обрабатывает электронную почту в формате HTML

    Как я упоминал ранее, WordPress отправляет всю почту с типом содержимого «текст / простой». Существует фильтр, который можно использовать для изменения типа содержимого электронной почты на text / html , но их использование само по себе приводит к некоторым уродливым электронным письмам:

    WordPress вообще не включает свои собственные шаблоны или какую-либо форму HTML-разметки, что означает, что электронные письма WordPress, отправленные с текстом / html , имеют неполное (или практически не существует) форматирование.

    Еще более досадно то, что WordPress не предоставляет официальной поддержки многостраничных электронных писем (электронных писем, которые отображают открытый текст в качестве альтернативы, когда HTML недоступен). В WordPress Trac есть проблема с добавлением поддержки для них, но, поскольку она открыта почти десять лет, я не очень оптимистичен в отношении ее реализации в ближайшее время.

    Как плагины обрабатывают электронную почту в формате HTML

    Таким образом, из-за отсутствия надежной поддержки электронных писем HTML в ядре WordPress вполне естественно, что разработчики плагинов решили решить эту проблему самостоятельно.Плагины, такие как WooCommerce и Easy Digital Downloads (оба из которых прекрасно работают с WP Offload SES), часто включают собственные шаблоны электронной почты HTML, а иногда включают методы расширения этих шаблонов, чтобы упростить другим разработчикам, которые хотят настраивать вещи дальше.

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

    Шаблоны электронной почты

    Плагин Email Templates — популярное решение для создания шаблонов электронных писем, которые отправляет WordPress.Он совместим с большинством плагинов для отправки электронной почты (включая WP Offload SES!) И позволяет легко настраивать содержимое и внешний вид электронных писем, которые WordPress отправляет по умолчанию. Мне особенно понравилось, как шаблоны редактируются из настройщика WordPress:

    По умолчанию он предоставляет красивый, относительно нейтральный шаблон электронной почты, которого будет более чем достаточно для большинства нужд. Он также позволяет вам добавлять собственные шаблоны или расширять предоставленный шаблон по умолчанию, чтобы вы могли легко настроить его при необходимости.

    Один потенциальный недостаток (или преимущество, в зависимости от вашей точки зрения), который я обнаружил с этим плагином, заключался в том, что он использует шаблоны для ВСЕХ писем, независимо от письма и его содержимого. Это означает, что когда другой плагин отправляет электронное письмо с шаблоном, есть вероятность, что будут использоваться оба шаблона.

    WP HTML Электронная почта

    Еще один высоко оцененный плагин для отправки электронных писем в формате HTML — это плагин WP HTML Email. Как и плагин Email Templates, он совместим с WP Offload SES и большинством других плагинов электронной почты и предоставляет простой шаблон, который будет работать в большинстве ситуаций.

    В отличие от плагина Email Templates, он также имеет платные расширения, которые интегрируются с некоторыми из самых популярных плагинов, включая WooCommerce, Easy Digital Downloads и другие. Он также позволяет отключить шаблоны писем для писем, отправляемых через некоторые популярные плагины, что должно помочь уменьшить количество конфликтов.

    Он также встраивает все стили CSS, что означает, что CSS не будет переопределен различными почтовыми клиентами, что приведет к более единообразному виду во всех направлениях.

    В целом, плагин WP HTML Email довольно хорош, он продуманно разбирается в том, что делает хорошее электронное письмо в формате HTML, и это плагин, который я определенно мог бы порекомендовать, если того требует ситуация.

    Как следует обрабатывать электронную почту в формате HTML?

    Хотя ядру WordPress предстоит пройти долгий путь, прежде чем оно получит хорошую поддержку электронной почты в формате HTML, разработчики плагинов помогли устранить некоторые недостатки. Я не верю, что мы увидим действительно доступное решение до тех пор, пока WordPress не исправит ошибку, мешающую работе с сообщениями электронной почты со смешанным / составным содержанием, чтобы рассылались как простой текст, так и HTML-версия.

    Наверное, неэффективно по времени развертывать собственное решение, работающее на нескольких клиентах (хотя я, возможно, напишу об этом немного в будущем). Вместо этого я, вероятно, рекомендовал бы оставлять электронные письма в виде простого текста и позволять отдельным плагинам (например, WooCommerce и т. Д.) Включать свои собственные электронные письма в формате HTML по мере необходимости. Но если у вас большой сайт, который рассылает много писем, или если вам нужен единый дизайн всех писем, то, возможно, вам подойдет что-то вроде плагина WP HTML Email.

    Отправляет ли ваш сайт электронные письма в формате HTML? Если да, то что вы используете для их рассылки? Дайте нам знать об этом в комментариях.

    Отправка html-сообщений с вложениями с использованием PHP mail

    function send_mail ($ mailer_arr) {

    $ mailer_arr = array_merge (array (‘to’ => », ‘from’ => », ‘subject’ => » , ‘message’ => », ‘cc’ => », ‘bcc’ => », ‘file_name’ => », ‘file_path’ => »), $ mailer_arr);

    $ EmailTo = strip_tags ($ mailer_arr [‘в’]);

    $ EmailFrom = strip_tags ($ mailer_arr [‘от’]);

    $ EmailSubject = $ mailer_arr [‘тема’];

    $ EmailMessage = stripslashes ($ mailer_arr [‘сообщение’]);

    $ EmailCc = strip_tags ($ mailer_arr [‘cc’]);

    $ EmailBcc = strip_tags ($ mailer_arr [‘bcc’]);

    $ filepath = $ mailer_arr [‘file_path’];

    // если имя_файла задано явно, используйте его, иначе используйте имя загруженного файла

    $ filename = $ mailer_arr [‘file_name’]? $ mailer_arr [‘имя_файла’]: конец (explode («/», $ filepath));

    // тип возврата каретки (мы используем константу конца строки PHP)

    $ eol = PHP_EOL;

    $ заголовки = «»;

    // основной заголовок

    if (! Empty ($ EmailFrom))

    $ headers.= «От:». $ EmailFrom. $ Eol;

    if (! Empty ($ EmailFrom))

    $ headers. = «Reply-To:». $ EmailFrom. $ Eol;

    if (! Empty ($ EmailCc))

    $ headers. = «CC:». $ EmailCc. $ Eol;

    if (! Empty ($ EmailBcc))

    $ headers. = «BCC:». $ EmailBcc. $ Eol;

    $ заголовков. = «Версия MIME: 1.0». $ Eol;

    / ** в случае, если путь к файлу не указан, отправьте HTML-письмо без вложений ** /

    if (! Isset ($ mailer_arr [‘file_path’]) || $ mailer_arr [‘file_path’] == ») {

    $ заголовков.= «Content-type: text / html». $ Eol;

    if (mail ($ EmailTo, $ EmailSubject, $ EmailMessage, $ headers))

    return true;

    иначе

    вернуть false;

    }

    $ attachment = chunk_split (base64_encode (file_get_contents ($ filepath)));

    // уникальный разделитель

    $ separator = md5 (time ());

    $ headers. = «Content-Type: multipart / mixed; граница = \» «.

    Добавить комментарий

    Ваш адрес email не будет опубликован.