Одним из основных компонентов каждого веб-приложения является его способность отправлять электронную почту.
Теперь это не означает, что каждое веб-приложение является собственным почтовым клиентом (хотя люди, безусловно, создают свои собственные).
Вместо этого я имею в виду, что приложения обычно отправляют электронные письма, когда пользователь регистрируется, пользователь изменяет свой пароль, когда что-то в системе изменяется, или — в более общем смысле — всякий раз, когда происходит что-то, о чем владельцы сайта хотят уведомить пользователей.
До сих пор в этой серии мы рассмотрели:
- Управление пользователями
- права доступа
- Управление сессиями
Последняя статья была, пожалуй, одной из самых сложных, которые мы рассмотрим; тем не менее, для тех, кто хочет добавить более продвинутую функциональность в свои проекты, это необходимо.
С учетом сказанного мы сделаем перерыв в некоторых более сложных материалах и посмотрим, что WordPress может предложить в отношении отправки электронных писем.
Понимание электронной почты
Прежде чем мы углубимся в то, что WordPress API предлагает для отправки электронной почты, настройки электронной почты и т. П., Важно понять несколько вещей об электронной почте.
А именно, важно понимать компоненты, которые входят в создание реальной электронной почты — в конце концов, это больше, чем просто адрес, тема и контент.
Есть некоторые технические нюансы, которые стоит понять, прежде чем мы начнем создавать наши собственные электронные письма.
Заголовки
Короче говоря, заголовки электронной почты содержат минимальный набор информации, в том числе: от кого отправляется электронная почта и адреса, на которые отправляется электронная почта.
Как правило, вы можете увидеть дополнительную информацию, включенную в заголовок. Например, эта информация может включать временную метку, когда отправляется электронное письмо.
Когда дело доходит до WordPress, отправитель, указанный в заголовке электронного письма, всегда определяется как отправитель по умолчанию в WordPress, если не указано иное.
Например, если вы хотите установить адрес ответа как « [email protected] », то это то, что вам нужно настроить.
Кроме того, обычно хорошей идеей является работа с заголовками электронной почты в виде массива, чтобы вы могли легко создавать, указывать и передавать адреса, точные адреса копий и скрытые получатели копий.
Тип 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 делает смехотворно простым введение функциональности электронной почты практически для любого сценария, который только можно вообразить — если для этого есть доступная ловушка, электронное письмо можно отправить.
С учетом вышесказанного, пришло время обратить наше внимание на один из самых распространенных аспектов разработки веб-приложений: управление данными.
В частности, нам нужно посмотреть, как информация может быть сохранена в базе данных и извлечена из данных, и как это можно сделать безопасно и эффективно.
Итак, начиная с следующей статьи, мы сделаем именно это.