Резюме писем, новые пользователи и SSO

Мой сайт Discourse является SSO-клиентом для моего сайта на WordPress. Учётные записи пользователей Discourse создаются для участников сайта WordPress по мере их входа в WordPress. Почти ни один пользователь ещё не посещал форум. У меня настроена отправка сводных писем ежедневно, и я ретроспективно применил эту настройку ко всем существующим пользователям Discourse. Проблема в том, что, похоже, эти сводки отправляются только тем учётным записям Discourse, которые хотя бы раз посещали форум. Я хочу, чтобы пользователи начинали получать сводные письма сразу после создания их аккаунта в Discourse. Является ли такое поведение с рассылкой писем стандартным? И если да, то как его изменить?

Подскажите, должны ли пользователи отвечать на письмо с подтверждением активации Discourse перед первым входом из WordPress в Discourse? Это будет необходимо, если на вашем сайте WordPress не используется метод регистрации по умолчанию. Это означает, что пользователи не будут помечены как active в Discourse, пока не ответят на письмо. Письмо со сводкой отправляется только пользователям, отмеченным как active в Discourse.

У нас в WordPress используется довольно сложная настройка регистрации, но все пользователи, которых я проверяю в Discourse, имеют статус «активен». Однако поля «последняя отправка письма» и «последнее посещение» пусты.

Интересно, нет ли здесь ошибки? Все мои настройки, кажется, на месте. Единственное, что приходит в голову, — это то, что я установил параметр «Подавлять сводные письма после дней» на 3650, и из-за этого письма для пользователей, которые никогда не заходили, были подавлены. Также какое-то время я подавлял рассылку для всех пользователей, но сейчас эта настройка отключена.

Думаю, именно так. Итоговое письмо показывает сводку событий с момента вашего последнего визита. Если вы никогда не заходили, то и периода «с момента последнего визита» нет.

Похоже, это и есть причина проблемы. Код проверяет следующее:

.where("COALESCE(last_seen_at, '2010-01-01') >= CURRENT_TIMESTAMP - ('1 DAY'::INTERVAL * #{SiteSetting.suppress_digest_email_after_days})")

Поскольку last_seen_at вернет nil для нового пользователя, код проверит, является ли дата ‘2010-01-01’ более поздней, чем 3650 дней назад, прежде чем отправлять письмо. Увеличение значения этого параметра должно решить вашу проблему. Риск установки этого значения на большое количество дней заключается в том, что вы можете отправлять сводное письмо пользователям, которые не интересуются сайтом.

Это немного помогло, но не решило проблему. Для проверки я установил частоту сводных писем на 30 минут, а максимальное количество уведомлений в день — на 1. Параметр «Последний визит» я установил на 365000. По сути, письма получили пользователи, добавленные в Discourse за последние 17 дней, а также несколько пользователей, которые заходили недавно, но были созданы раньше. Могу подтвердить, что все пользователи активированы — по крайней мере, это так для случайной выборки тех, кто не получил письма. Не знаю, как это исправить. Можно ли что-то сбросить вручную?

Я провёл дополнительное расследование и выяснил, что при изменении частоты настройки предпочтений для сводных писем на большинстве аккаунтов не применяются. Например, если изменить частоту сводок с 30 минут на 1 час и подтвердить применение изменения ко всем аккаунтам, настройка, похоже, не сохраняется. Я подтвердил это, войдя в аккаунты, которые не получают письма: у них в настройках предпочтений сводки отключены.