Одним из основных компонентов каждого веб-приложения является его способность отправлять электронную почту.
Теперь это не означает, что каждое веб-приложение является собственным почтовым клиентом (хотя люди, безусловно, создают свои собственные).
Вместо этого я имею в виду, что приложения обычно отправляют электронные письма, когда пользователь регистрируется, пользователь изменяет свой пароль, когда что-то в системе изменяется, или — в более общем смысле — всякий раз, когда происходит что-то, о чем владельцы сайта хотят уведомить пользователей.
До сих пор в этой серии мы рассмотрели:
- Управление пользователями
- права доступа
- Управление сессиями
Последняя статья была, пожалуй, одной из самых сложных, которые мы рассмотрим; тем не менее, для тех, кто хочет добавить более продвинутую функциональность в свои проекты, это необходимо.
С учетом сказанного мы сделаем перерыв в некоторых более сложных материалах и посмотрим, что WordPress может предложить в отношении отправки электронных писем.
Понимание электронной почты
Прежде чем мы углубимся в то, что WordPress API предлагает для отправки электронной почты, настройки электронной почты и т. П., Важно понять несколько вещей об электронной почте.
А именно, важно понимать компоненты, которые входят в создание реальной электронной почты — в конце концов, это больше, чем просто адрес, тема и контент.
Есть некоторые технические нюансы, которые стоит понять, прежде чем мы начнем создавать наши собственные электронные письма.
Заголовки
Короче говоря, заголовки электронной почты содержат минимальный набор информации, в том числе: от кого отправляется электронная почта и адреса, на которые отправляется электронная почта.
Как правило, вы можете увидеть дополнительную информацию, включенную в заголовок. Например, эта информация может включать временную метку, когда отправляется электронное письмо.
Когда дело доходит до WordPress, отправитель, указанный в заголовке электронного письма, всегда определяется как отправитель по умолчанию в WordPress, если не указано иное.
Например, если вы хотите установить адрес ответа как « donotreply@domain.com », то это то, что вам нужно настроить.
Кроме того, обычно хорошей идеей является работа с заголовками электронной почты в виде массива, чтобы вы могли легко создавать, указывать и передавать адреса, точные адреса копий и скрытые получатели копий.
Тип MIME
Когда дело доходит до формата, которым следуют электронные письма, вы, вероятно, увидите две формы:
- Простой текст
- HTML
Вы привыкли видеть HTML в большинстве современных почтовых клиентов; однако, если у вас более упрощенный клиент, он настроен на отображение только обычного текста или вы читаете электронную почту на немного старом телефоне, то вы будете читать содержимое в виде простого текста.
WordPress позволяет отправлять электронные письма в виде простого текста или HTML.
Когда мы рассмотрим пример того, как программно отправить электронное письмо, мы рассмотрим, как именно это сделать. Короче говоря, есть ловушка, которая делает его действительно простым — но мы подождем, чтобы увидеть его в действии, пока не рассмотрим остальные необходимые части письма.
Вложения
Как вы знаете, вложения — это практически любой файл, который вы вложили в электронное письмо и отправили получателю.
Дело в том, что есть некоторые правила, регулирующие электронную почту — они не обязательно устанавливаются программным обеспечением. Вместо этого серверы, почтовые клиенты и другие различные правила ограничивают то, что мы можем получить в нашей папке входящих.
Например:
- Некоторые клиенты не позволяют отправлять zip-файлы или исполняемые файлы
- Многие почтовые службы имеют максимальный размер файла, который можно прикрепить
- Некоторые типы сообщений электронной почты могут быть помечены как спам на основе их вложений (или их содержимого).
В любом случае, это вне нашего контроля — нам просто нужно знать ограничения того, кому мы отправляем электронную почту, и следить за тем, чтобы мы оставались в них.
С этой целью создание вложений для отправки по электронной почте WordPress действительно легко.
Хотя вложения явно не требуются, вы можете прикрепить один файл или даже несколько файлов. В WordPress это можно сделать с помощью строки или массива.
Мы не будем смотреть точно, как это сделать прямо сейчас, но мы вернемся к этому на мгновение, когда рассмотрим пример того, как программно отправить электронное письмо.
Кому, теме и сообщению
На самом базовом уровне каждое письмо состоит из адреса электронной почты « Кому », « Тема » и « Сообщение ».
В WordPress их также очень легко установить — просто предоставьте строки для каждого, и вы готовы к работе.
Конечно, если вы хотите отправить электронное письмо нескольким людям, вы можете либо перебрать коллекцию адресов и отправить одно электронное письмо для каждого пользователя, либо вы можете предоставить массив получателей для WordPress Mail API, и он будет отправлять электронную почту всем из тех, кто включен.
И помните: если вы хотите указать другой адрес reply-to , это идет в заголовках, которые мы рассмотрели ранее в этой статье.
Использование WordPress Email API
Итак, учитывая все сказанное, мы готовы взглянуть на API электронной почты WordPress.
Короче говоря, все функции заключены в функцию под названием wp_mail ; однако есть несколько ловушек, о которых нам необходимо знать, если мы хотим в полной мере воспользоваться предложением приложения.
Требуемые крючки
В частности, мы собираемся использовать следующие хуки:
-
wp_mail_content_typeпозволяет нам определить MIME-тип отправляемого письма -
wp_mail_from— это фильтр, который мы можем использовать для определения адреса from, вместо использования массива$headers -
wp_mail_from_name— это фильтр, который мы можем использовать для определения человека, а не с помощью массива$headers -
wp_login— это хук, который мы будем использовать для демонстрации, чтобы мы отправляли электронные письма человеку, когда он входит в панель управления WordPress.
Ради полноты я поделюсь всем кодом ниже, а затем мы пройдемся по нему.
Исходный код
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
<?php
function acme_email_individual( $input ) {
/**
* Note: assume that $input has keys for ’email-address’.
*/
// Generate the password
$password = wp_generate_password ( 12, false );
// Email the user that they’re profile was created
$message = ‘Hey There,’;
$message .= ‘<br /><br />’;
$message .= ‘Your account has been created.
$message .= ‘<br />’;
$message .= ‘<ul>’;
$message .= ‘<li>Username: ‘ .
$message .= ‘<li>Password: ‘ .
$message .= ‘</ul>’;
$message .= ‘<br />’;
$message .= ‘You can login to the application <a href=»‘ . get_bloginfo( ‘siteurl’ ) . ‘»>here</a>.’;
add_filter( ‘wp_mail_content_type’, create_function( », ‘return «text/html»;’ ) );
add_filter( ‘wp_mail_from’, ‘acme_mail_from’ );
add_filter( ‘wp_mail_from_name’, ‘acme_mail_from_name’ );
wp_mail( $input[’email-address’], ‘Your Acme Account Has Been Created!’, $message, array() );
}
function acme_mail_from( $email ) {
// NOTE: replace [at] with @.
return ‘donotreply[at]acme.com’;
}
function acme_mail_from_name( $name ) {
return ‘The Acme Company’;
}
|
Если вы следили за этой статьей до сих пор, то ничего из этого не должно вызывать удивления: в конце концов, мы используем преимущества хуков, которые предоставляет WordPress, мы строим строки для передачи в качестве аргументов функции, а затем мы вызываем функцию wp_mail .
Однако обратите внимание, что мы передаем пустой массив в качестве аргумента $headers для этого письма. Это потому, что мы используем пользовательский фильтр для установки « От имени » и « От адреса », используя фильтр и подключаемую функцию, а не массив.
Этот путь не обязательно лучше, чем альтернатива; однако это означает, что существует несколько способов достижения одного и того же результата.
А теперь перейдем к данным!
Так что это еще одна особенность WordPress, которая позволяет действительно легко включать функции электронной почты в ваше веб-приложение.
На самом деле, я думаю, что модель событий WordPress делает смехотворно простым введение функциональности электронной почты практически для любого сценария, который только можно вообразить — если для этого есть доступная ловушка, электронное письмо можно отправить.
С учетом вышесказанного, пришло время обратить наше внимание на один из самых распространенных аспектов разработки веб-приложений: управление данными.
В частности, нам нужно посмотреть, как информация может быть сохранена в базе данных и извлечена из данных, и как это можно сделать безопасно и эффективно.
Итак, начиная с следующей статьи, мы сделаем именно это.