Что лучший подход к отправке электронного письма сотням получателей из приложения Платформы Зенда?

Сначала прочитайте CSV с аргументом skiprows=1 (df=pd.read_csv('your.csv', skiprows=1). Затем прочитайте только первую строку csv и сохраните ее как новый столбец в кадре данных.

with open('your.csv', newline='') as f:
   reader = csv.reader(f)
   df["Date"] = next(reader)

Если вы хотите, чтобы это был один столбец DateTime, вы можете объединить их, используя `pd.to_datetime ':

pd.to_datetime(df['Date'] + ' ' + df['Heure'])
16
задан Andrew 7 May 2009 в 08:13
поделиться

7 ответов

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

  • Переберите свой набор пользователей, создавая электронное письмо для каждого из них и, возможно, настраивая контент.
  • Передайте каждый почтовый объект в очередь, что задержит отправка электронного письма на потом
  • В каком-то скрипте cron рассылает содержимое очереди по несколько сотен за раз. Примечание. Вы можете настроить количество отправляемых электронных писем, просмотрев журналы на предмет ошибок, возникающих в процессе фактической отправки. Если вы попытаетесь отправить слишком много, я заметил, что он достигает точки, когда почтовый транспорт больше не принимает соединения (я использую qmail)

Есть несколько библиотек, которые вы можете использовать для этого, PEAR Mail Queue (с Mail_Mime) и SwiftMailer позволяют создавать и ставить в очередь электронные письма. Пока что Zend Mail обеспечивает только создание электронных писем, а не постановку в очередь (подробнее об этом позже).

У меня есть опыт работы с PEAR Mail Queue , и есть несколько ошибок. Если вы пытаетесь поставить в очередь большое количество писем (например, зацикливаете более 20000 пользователей и пытаетесь поместить их в очередь в разумные сроки), использование цитируемой-печати кодировки Mail Mime будет очень медленным. Вы можете ускорить это, переключившись на кодировку base64.

Что касается Zend Mail, вы можете написать объект Zend Mail Transport, который помещает ваши объекты Zend Mail в очередь PEAR Mail. Я сделал это с некоторым успехом, но нужно немного поиграть, чтобы сделать это правильно. Для этого расширьте Zend Mail Transport Abstract, реализуйте метод _sendMail (в котором вы помещаете объект Zend Mail в почтовую очередь) и передаете экземпляр вашего транспортного объекта методу send () объекта Zend Mail или Zend Mail :: setDefaultTransport ().

Суть в том, что есть много способов сделать это, но это потребует некоторых исследований и обучения от вашего имени. Однако это очень решаемая проблема.

19
ответ дан 30 November 2019 в 15:52
поделиться

ПРИМЕЧАНИЕ: когда я впервые прочитал ваш вопрос, я подумал, что он ответил сотнями тысяч писем одновременно. Когда я дважды проверил, я заметил, что это на самом деле сказал, что сотни тысяч. Я слишком ленив, чтобы изменить свой пост сейчас, поэтому вот несколько предостережений: из моего опыта, вы, вероятно, можете нормально работать без коммерческого инструмента примерно до 40K. Приблизительно в 10 тысячах вы захотите следовать «минимальному» списку, чтобы избежать серьезной боли, когда вы начинаете достигать больших размеров списка. Тем не менее, я рекомендую сразу все это реализовать.

Я уже говорил об этом, есть две стороны для отправки электронной почты:

  1. Техническая сторона - в основном все RFC вокруг smtp протокол, форматы электронной почты, DNS записи и т. д. Это мягко сложный, но решаемый.
  2. Волшебная сторона - доставка электронной почты Управление вуду. Ты получишь разочарование, вещи сломаются ни за что очевидная причина, и вы будете рассмотреть возможность уйти на другую работу это не связано с электронной почтой.

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

Одной из областей, которые вы получите, написав свое собственное на PHP, является ограничение. / смоляная яма. Почтовые серверы начнут добавлять в sleep (30) после того, как вы отправите несколько сообщений, чтобы замедлить работу и предотвратить рассылку спама.

Как правило, эти коммерческие массовые отправители используют протокол SMTP для постановки в очередь. Вы продолжите использовать Zend_Mail, но жестко закодируете его для подключения к вашему серверу. Почта будет поставлена ​​в очередь почти так же быстро, как вы можете ее отправить, затем используйте свой собственный движок для отправки почты по назначению.

В списке из 100 тыс. вы должны будете использовать лучшие методы работы с электронной почтой. Как минимум, вам понадобятся:

  • Записи SPF, возможно также и DKIM
  • Несколько IP-адресов для сегментации трафика - есть 3 IP-адреса, один для качественного адреса, которому вы доверяете, один для IP-адресов со средней степенью риска и один для IP-адреса высокого риска. Такой дизайн помогает минимизировать риск получения почты для ваших лучших клиентов.
  • Правильный обратный DNS для отправки IP-адресов
  • Используйте петли обратной связи от AOL, hotmail, yahoo и других для обработки жалоб на спам
  • Отмена подписки и управление отказов - убедитесь, что вы сокращаете эти адреса
  • Также важно иметь отслеживание открытий / кликов - если ваши клиенты в списке А не открывают ваши электронные письма, вам нужно перевести их в список Б. вперед. Это важно, потому что интернет-провайдеры превратят неактивные учетные записи в приманку. Hotmail славится этим.

Наконец, если вы действительно серьезно относитесь к отправке электронной почты, вам понадобятся другие инструменты, такие как Return Path.

18
ответ дан 30 November 2019 в 15:52
поделиться

Из документации PHP.net.

Примечание. Стоит отметить, что функция mail () не подходит для больших объемов электронной почты в цикле. Эта функция открывает и закрывает сокет SMTP для каждого электронного письма, что не очень эффективно.
Для отправки большого количества сообщений электронной почты см. Пакеты » PEAR :: Mail и» PEAR :: Mail_Queue .

Класс Zend Mail, вероятно, довольно хорош (большинство вещей Zend хороши), но если вы хотите другие варианты. Вот они.

3
ответ дан 30 November 2019 в 15:52
поделиться

Вы должны хорошо использовать PHP для тысяч получателей, хотя избегайте mail (), как отмечали другие. Я видел несколько систем, предназначенных для больших объемов почты (более 100 000 получателей), которые перешли к обходу стандартных почтовых функций и пытались работать более напрямую с MTA. Даже тогда мне было непонятно, что требовалось.

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

2
ответ дан 30 November 2019 в 15:52
поделиться

Я реализовал массовую рассылку в php, где каждое письмо было настроено для отдельного человека. Это было не сложно и не заняло много времени. Я использовал swiftmailer и cron. Zend Mail тоже может быть в порядке. Я начал с почтовой очереди PEAR, но очередь писем была слишком медленной.

Процесс размещения электронных писем проходил следующим образом:

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

Я использовал задание cron для отправки пакетов электронной почты. Интервал времени cron и количество электронных писем, отправленных за пакет, были важны, так как я был на общем хосте с ограничениями. Сценарий, который был вызван заданием cron, был доступен только для cron. Сценарий считывает x количество писем из таблицы, упорядоченных по идентификатору пакета и, по желанию, по приоритету. Если электронное письмо было успешно отправлено, оно было удалено из очереди базы данных. Если электронное письмо не могло быть отправлено, оно оставалось в очереди, и счетчик был увеличен для этой записи. Если счетчик превышал установленное число, то электронное письмо было удалено из очереди.

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

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

2
ответ дан 30 November 2019 в 15:52
поделиться

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

Если вы знакомы с фреймворком, и я буду придерживаться его.

Важные моменты, которые следует учитывать при отправке электронных писем большому количеству людей:

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

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

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

0
ответ дан 30 November 2019 в 15:52
поделиться

Я разработал систему управления информационными бюллетенями с Swiftmailer , и ее очень легко внедрить. Он поддерживает SMTP, шифрование, вложения, пакетную отправку, ...

0
ответ дан 30 November 2019 в 15:52
поделиться
Другие вопросы по тегам:

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