Сегодня, когда я отправляю основные электронные письма, я использую класс «Mail», который представляет собой пользовательскую оболочку, использующую SwiftMailer, например:
<?php
Mail::create('Message title')
->template('Template string or view path. Global variable "var" is "{var}". Current user is {username}.')
->tags(array('var' => 'value 1'))
->from('[email protected]')
->to('[email protected]', array('username' => 'Boris'))
->transport(Mail::SMTP)
->send();
Он отлично работает для основных электронных писем, но не может быть использован для отправки информационных бюллетеней по нескольким причинам:
Поэтому я подумал о способе централизовать более сложное управление электронной почтой. Я сделал схему:
Я не хочу, чтобы удаленный сервер сохранял какую-либо контактную информацию, только кампании, получатели и статистика, как на следующей диаграмме:
«данные«Поле»ПолучательТаблица предназначена для хранения пользовательской структуры данных, которая будет отправлена обратно, когда у API запрашивается информация о получателе. Например:
<?php
$result = NewsletterAPI::getRecipientsViewReport($campaignRef);
//
// Will contain something like :
// Array
// (
// [recipients] => Array
// (
// [0] => Array
// (
// [email] => [email protected]
// [opened] => 3
// [last_open_date] => '2015-02-02 12:32:23',
// [data] => Array
// (
// [id] => 123
// )
// )
// [1] => Array
// (
// [email] => [email protected]
// [opened] => 0
// [last_open_date] => null,
// [data] => Array
// (
// [id] => 17
// )
// )
// )
// )
Удаленный сервер не заботится ни о чем, кроме отправки электронных писем и получения статистики по ним. Независимо от того, какие объекты находятся за адресами электронной почты или как пользователи управляются.
Это только предотвращает доступ пользователя к данным, которые ему не принадлежат, и предотвращает доступ пользователей с правами администратора к методам API администратора (например, создание пользователей).
Таким образом, это очень легко интегрировать в любой веб-сайт, мне просто нужно сохранить ключ API учетной записи, с которой я хочу отправлять почту (например, добавив «mailing_api_key«поле по моему»пользовательсущность например).
Прежде всего, что вы думаете об этой архитектуре?
В реальном мире количество электронных писем не должно быть очень большим (несколько тысяч в неделю), но я бы хотел, чтобы система была как минимум устойчивой.
Помимо этого, есть три основные проблемы, о которых я могу думать:
Поэтому я провел несколько исследований, чтобы найти специализированные сервисы, которые могут справиться с этим, например:
и так далее … Но все они хотят управлять контактами и многими вещами, которые мне безразличны.
Я просто хочу услугу без интерфейса вообще, сделать что-то близкое к тому, что я описал выше:
Большое спасибо, если вы прочитали все это, я надеюсь найти решение.
С уважением.
Большинство (крупных) компаний просто используют сторонние API, такие как mailchimp. Просто подпишитесь на рассылку новостей нескольких компаний и посмотрите заголовок письма.
Существует причина, по которой компании с бюджетом, превышающим миллионы, будут использовать сторонние информационные бюллетени. У вас будет много проблем со спам-фильтрами и проблемы, о которых вы еще не знаете … В разных странах даже существуют разные законы. (пример: в Германии вы должны предоставить ссылку для отмены подписки в письме).
Эти сторонние информационные агентства предоставляют API, которые вы можете интегрировать в php.
Других решений пока нет …