Какие методы существуют для установки большой системы уведомления по электронной почте?

Моей компании создали веб-сайт с PHP. Мы используем встроенную почтовую функциональность PHP для отправки тысяч электронных писем подписчикам ежедневно.

Это - ужасная идея. Это дросселирует наш сервер и занимает часы для завершения целого пакета.

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

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

Даже с помощью этой новой идеи, мы говорим о БОЛЬШОМ КОЛИЧЕСТВЕ посланных электронных писем.

Таким образом, мой вопрос очень конкретен: у Меня есть общее представление о том, как создать систему внутренне, но что лучший способ состоит в том, чтобы отослать все эти электронные письма?

Пункты маркированного списка для рассмотрения:

  • Иногда содержание электронных писем идентично через получателей, но многие из них будут настроены в расчете на пользователя (они выбирают то, о чем они уведомляются, и иногда это агрегировано).
  • Я хочу систему, которая не собирается дросселировать сервер и завершится за достойное количество времени. Я не возражаю идти со сторонним сервисом (даже заплаченный), если, именно это он собирается взять.
  • Система должна сцепиться в PHP легко или API или независимо от того, что должно быть относительно легко для меня звонить от Вашего типичного веб-сервера.
  • У нас есть выделенный сервер и полный контроль над ним (таким образом, мы можем установить приложения, сервисы, безотносительно).
  • Любой отчасти подробная информация об отслеживании (открывается, щелчки, и т.д.) является огромным плюс.
  • Эти электронные письма иногда чувствительны ко времени (так не может взять весь день для отправки).

Мысли?Совет? Укажите на меня в правильном направлении?


Править

Разъясниться:

Я могу сделать их самостоятельно:

  • поддержите список пользователей
  • почтовое поколение содержания дескриптора на основе пользовательских настроек

И нужно что-то еще (приложение, сторонний сервис, w/e) к:

  • примите почтовое содержание и адреса и на самом деле пошлите электронные письма
  • обеспечьте данные отслеживания (открывается, щелчки, и т.д.). Чем больше детали, тем лучше.

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

15
задан Damjan Pavlica 31 March 2015 в 13:53
поделиться

7 ответов

Я бы порекомендовал использовать третьстороннюю почтовую службу SilverPop или что-то вроде. Мы использовали их несколько лет и были довольно довольны. У них уже есть отношения с основными почтовыми клиентами (AOL, Yahoo!, Gmail и т. Д.), И они делают хорошую работу, чтобы рассказать вам, если вы отправляете вещи, скорее всего, будут классифицированы как спам.

У них довольно обширная API, использующая запросы XML HTTP / HTTPS, которые могут привязать к существующим системам. Вы можете использовать его для удаленного триггера электронной почты, расписания рассылки, настроить содержимое электронной почты, настроить, управлять и запросить огромные списки получателей, запускают пакетные процессы и т. Д.

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

1
ответ дан 1 December 2019 в 05:23
поделиться

Мы используем встроенную функциональность PHP электронной почты для отправки тысяч электронных писем для подписчиков ежедневно.

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

Как вы думаете, почему ваши проблемы являются чем-то, что связано со встроенной функцией электронной почты PHP? Это очень тонкое обертку вокруг «почты» или простой SMTP-клиент в зависимости от какой платформы, на которой вы работаете.

Когда вы говорите, что он задыхает ваш сервер - вы имеете в виду ваш почтовый сервер? Ваш веб-сервер? Что-то еще?

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

Можете ли вы сказать нам:

  1. Какая ОС работает на PHP на

  2. Как вы вызываете код для создания электронных писем

  3. , какая настройка почты в файле php.ini

  4. , какой тип MTA вы используете? На какой ОС?

  5. Как ye mta copnfigured - это доставлено напрямую или через смарт-реле?

  6. Какой сервер получает «задохнул»?

  7. Какие меры против спама у вас на месте для исходящей почты ?

Затем сообщите нам, что вы сделали, чтобы диагностировать ошибку, и почему вы считаете его конкретно на отправке почты.

c.

2
ответ дан 1 December 2019 в 05:23
поделиться

Возможно, не идеально, но если вы смотрите на крупномасштабную трансмиссию, есть коммерческие решения, такие как POWERMTA 25's Powermta , которые могут быть установлены для эффективного передачи содержимого данной папки.

Как таковой, вы просто используете PHP для создания персональных данных FOMIMATATED CAR для каждого исходящего электронного письма и поместите их во временный каталог до передачи. (Я написал такую ​​систему в прошлом, и вы будете удивлены способностью PHP размахивать электронные письма, даже с довольно сложными текстовыми электронными письмами и HTML с изображениями в виде встроенных вложений и т. Д.) Как только вы были готовы к Передача, вы бы затем переместите файлы un-massse в папку Moserged Powermta, и она позаботится о передаче.

В зависимости от того, как вы посмотрите на него преимущество / проблему с таким решением, заключается в том, что вам нужно будет создавать доверительные отношения с людьми, такими как AOL, MSN / Hotmail и т. Д. Для того, чтобы ваш почтовый сервер не заблокировал в черный список Из-за отчетности пользователя в качестве спама. (Это сказано, что это, вероятно, будет фактором с любым решением DIY.)

0
ответ дан 1 December 2019 в 05:23
поделиться

После просмотра кода взаимодействия Windows Shell я обнаружил, что для интерфейсов следовало использовать [ComImport] и NOT [ComVisible]. Чтобы сделать подписи равными уже зарегистрированным, я использовал [PreserureSig]. Наследование интерфейса также нуждалось в некоторой помощи путем повторного объявления базового интерфейса в родительском интерфейсе.

Надеюсь, это кому-то поможет.

Вот рабочий класс

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace WmpTestPlugin
{
    [ComImport]
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    [Guid("695386EC-AA3C-4618-A5E1-DD9A8B987632")]
    public interface IWmpEffects2 : IWmpEffects
    {
        [PreserveSig]
        new int Render(ref TimedLevel pLevels, IntPtr Hdc, ref RECT pRC);
        [PreserveSig]
        new int MediaInfo(int lChannelCount, int lSampleRate, string bstrTitle);
        [PreserveSig]
        new int GetCapabilities(ref int pdwCapabilities);
        [PreserveSig]
        new int GetTitle(ref string bstrTitle);
        [PreserveSig]
        new int GetPresetTitle(int nPreset, ref string bstrPresetTitle);
        [PreserveSig]
        new int GetPresetCount(ref int count);
        [PreserveSig]
        new int SetCurrentPreset(int currentpreset);
        [PreserveSig]
        new int GetCurrentPreset(ref int currentpreset);
        [PreserveSig]
        new int DisplayPropertyPage(IntPtr hwndOwner);
        [PreserveSig]
        new int GoFullScreen(bool fFullscreen);
        [PreserveSig]
        new int RenderFullScreen(ref TimedLevel pLevels);

        [PreserveSig]
        int SetCore(IntPtr pPlayer);
        [PreserveSig]
        int Create(IntPtr hwndParent);
        [PreserveSig]
        int Destroy();
        [PreserveSig]
        int NotifyNewMedia(IntPtr pMedia);
        [PreserveSig]
        int OnWindowMessage(int Msg, int WParam, int LParam, ref int plResultParam);
        [PreserveSig]
        int RenderWindowed(ref TimedLevel pData, bool fRequiredRender);
    }

    [ComImport]
    [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    [Guid("D3984C13-C3CB-48e2-8BE5-5168340B4F35")]
    public interface IWmpEffects
    {
        [PreserveSig]
        int Render(ref TimedLevel pLevels, IntPtr Hdc, ref RECT pRC);
        [PreserveSig]
        int MediaInfo(int lChannelCount, int lSampleRate, string bstrTitle);
        [PreserveSig]
        int GetCapabilities(ref int pdwCapabilities);
        [PreserveSig]
        int GetTitle(ref string bstrTitle);
        [PreserveSig]
        int GetPresetTitle(int nPreset, ref string bstrPresetTitle);
        [PreserveSig]
        int GetPresetCount(ref int count);
        [PreserveSig]
        int SetCurrentPreset(int currentpreset);
        [PreserveSig]
        int GetCurrentPreset(ref int currentpreset);
        [PreserveSig]
        int DisplayPropertyPage(IntPtr hwndOwner);
        [PreserveSig]
        int GoFullScreen(bool fFullscreen);
        [PreserveSig]
        int RenderFullScreen(ref TimedLevel pLevels);
    }


    //[ComVisible(true)]
    [StructLayout(LayoutKind.Sequential)]
    public struct Data
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x400)]
        public byte[] Data0;
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x400)]
        public byte[] Data1;
    }

    //[ComVisible(true)]
    public enum PlayerState
    {
        Stop_State,
        Pause_State,
        Play_State
    }

    //[ComVisible(true)]
    [StructLayout(LayoutKind.Sequential)]
    public struct TimedLevel
    {
        public Data Frequency;
        public Data Waveform;
        public PlayerState State;
        public long TimeStamp;
    }

    //[ComVisible(true)]
    [StructLayout(LayoutKind.Sequential)]
    public struct RECT
    {
        public int Left;
        public int Top;
        public int Right;
        public int Bottom;
        public int Width { get { return this.Right - this.Left; } }
        public int Height { get { return this.Bottom - this.Top; } }
    }
}
-121--4950868-

Shell view

  • Ctrl + F , чтобы запустить поиск в текущем файле. (не создает новый буфер с соответствующими строками)
    Только Mark Occurrences предназначен для выделения вхождений, но не является настолько продвинутым, как функция Emacs.

Mark Occurrences

  • Опции Formatter могут эмулировать функцию « align-regex », как описано здесь .

Установки - > Java - > Стиль кода - > Форматер .
Нажмите кнопку «Изменить» в профиле (возможно, потребуется создать новый профиль, так как изменить значение по умолчанию невозможно).

В разделе отступов выберите « Выровнять поля по столбцам ».

Затем в коде Ctrl + Shift + F запустит этот форматтер.

-121--4013165-

Используйте Google AppEngine, если вас беспокоит масштабируемость и настройка: он предоставляет API электронной почты и вы можете взаимодействовать с ним все, что угодно, при условии, что это через HTTP интерфейс.

Конечно, это просто предложение - игнорировать, если это не подходит.

0
ответ дан 1 December 2019 в 05:23
поделиться

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

1
ответ дан 1 December 2019 в 05:23
поделиться

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

См. также вопрос Отправители электронной почты третьих лиц и мой ответ.

0
ответ дан 1 December 2019 в 05:23
поделиться

Работа, ломающая логика настраивается.

В предпочтения-> текстовые редактор-> поведение , измените режим работы. Вы, вероятно, хотите SharpDevely режим.

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

-121--3383615-

Проверьте Campaign Enterprise для возможного внутреннего решения.

0
ответ дан 1 December 2019 в 05:23
поделиться
Другие вопросы по тегам:

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