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

Я выполняю веб-сервис, который в настоящее время отсылает электронные письма с подтверждением новым пользователям через Gmail smtp серверы. Поскольку я только получаю несколько новых пользователей каждый день, это не было проблемой.

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

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

Я не думаю с помощью smtp серверов Gmail, будет больше сокращать его, но я не знаю это наверняка. Я не знаю, какие максимальные исходящие сообщения Gmail на учетную запись (это могло бы быть 100/день), но они ограничивают исходящую почту 500 получателями на сообщение. Я не отправляю единственное сообщение 500 получателям, но я собираюсь быть передающими 1000-ми специализированных сообщений с каждым получателем, добирающимся один в день.

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

  • Я должен настроить свой собственный сервер исходящей почты? Если я делаю это, кажется, что у меня будут все виды других проблем для волнения о, такие как предотвращение злоупотребления почтового сервера, контроль возвратов, разрешение путей к уклонению электронных писем, и т.д. Есть ли какие-либо инструменты или сервисы для помощи с этим? Возможно, что-то как OpenEMM или сервисы как MailChimp? Но они кажутся сфокусированными больше к кампаниям почтового маркетинга.
  • Я не думаю, что у меня должно быть само веб-приложение, обрабатывают электронные письма отправки, как это в настоящее время для новых пользовательских регистраций. Я думаю, что должен установить отдельный сервер обмена сообщениями, который может получить доступ к тому же бэкенду/хранилищу данных как веб-приложение. Мысли об этом?
  • Я должен полагать, что установка своего рода сервиса организации очередей сообщения помогает с этим, таким как JMS, RabbitMQ, ActiveMQ, и т.д.?
  • Я должен предоставить пользователям путь к уклонению? Я должен отметить их, поскольку объем обменивается сообщениями? Я действительно не рассматриваю эти сообщения почтового маркетинга, но я не уверен, что считают соответствующим или надлежащим сетевым этикетом.

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

Спасибо!

6
задан Tauren 16 March 2010 в 23:20
поделиться

2 ответа

Попробуйте проверить, работает ли ваша почта:

<?php
require_once "Mail.php";

$from = "Sandra Sender <sender@example.com>";
$to = "Ramona Recipient <recipient@example.com>";
$subject = "Hi!";
$body = "Hi,\n\nHow are you?";

$host = "mail.example.com";
$username = "smtp_username";
$password = "smtp_password";

$headers = array ('From' => $from,
  'To' => $to,
  'Subject' => $subject);
$smtp = Mail::factory('smtp',
  array ('host' => $host,
    'auth' => true,
    'username' => $username,
    'password' => $password));

$mail = $smtp->send($to, $headers, $body);

if (PEAR::isError($mail)) {
  echo("<p>" . $mail->getMessage() . "</p>");
 } else {
  echo("<p>Message successfully sent!</p>");
 }
?>

Если это не работает, вам необходимо проверить конфигурацию PHP.

Для получения дополнительной информации см. http://php.net/manual/en/function.mail.php .

-121--2328723-

Я согласен с Арне Бурмейстером, код для этого будет выглядеть следующим образом:

private static class SingletonObjectFactoryHolder
{
    private static ObjectFactory INSTANCE;


    private ObjectFactory() 
    {

    }

    public static String getInstance() throws Exception
    {
      return (INSTANCE == null) ? (INSTANCE = new ObjectFactory()) : INSTANCE; 
     // A ternary operator might not be the best fit if you need to throw an exception, but I think it looks nicer than the if(INSTANCE==null){} else{} for lazy instantiation.
    }

}
-121--1362692-

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

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

Обычно я просто использую таблицу базы данных в качестве очереди - веб-приложение вставляет строки для каждого сообщения, которое оно хочет отправить. Приложение службы/запланированной задачи извлекает новые сообщения из таблицы и отправляет их. Это дает вам большую гибкость, если вы хотите переключить почтовые серверы позже, лучшую надежность, если почтовый сервер не работает, более простую диагностику, если есть проблемы с получателями, не получающими сообщения, и возможность повторной отправки сообщений. Что касается использования JMS/MQ для этого - вероятно, нет необходимости. IMO таблица базы данных, используемая в качестве очереди, даст вам больше гибкости, чем фактическая система очередей на основе JMS.

Что касается выбора, ДА - вы должны дать людям способ отказаться. Я не думаю, что вам нужно помечать сообщения как массовые.

4
ответ дан 16 December 2019 в 21:39
поделиться

Что касается архитектуры, я бы определенно рассмотрел возможность отделения отправки электронных писем от основной службы с помощью некоторой формы асинхронной очереди сообщений (или ее факсимильной связи с использованием база данных в качестве посредника). Еще одним преимуществом этого подхода является то, что если SMPT-сервер \ сеть не работает, вы можете создать семантику повтора, кроме того, для будущей масштабируемости вы можете реализовать несколько отправителей почты, читающих из одной очереди, или реализовать регулирование отправки или планирование (т.е. отправлять n сообщений в час. ) и т. д. и т. д.

4
ответ дан 16 December 2019 в 21:39
поделиться
Другие вопросы по тегам:

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