# Сводка активности не отправляется, если отправляются другие письма

**URL:** https://meta.discourse.org/t/activity-summary-not-sent-if-other-emails-are-sent/293040
**Category:** Feature
**Tags:** email, completed, activity-summary
**Created:** [26.Январь.2024 09:38:38 UTC](https://meta.discourse.org/t/activity-summary-not-sent-if-other-emails-are-sent/293040 "2024-01-26T09:38:38Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![ToddZ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/toddz/32/328350_2.png) [@ToddZ](https://meta.discourse.org/u/ToddZ)
#### Post date: [26.Январь.2024 09:38:39 UTC](https://meta.discourse.org/t/activity-summary-not-sent-if-other-emails-are-sent/293040/1 "2024-01-26T09:38:39Z")

</div>

Я заметил, что в разделе Администратор | Электронная почта | Отправлено дайджест-письмо не было отправлено пользователям, хотя все они получили уведомление о событии user\_watching\_first\_post (согласно настройкам по умолчанию).

Я подтвердил, что дело не в том, что эти пользователи недавно заходили на сайт, что срок действия настройки «Отключать дайджест-письма после N дней» истёк или что они изменили свои настройки уведомлений по электронной почте.

В комментариях к этому более старому сообщению предполагается, что дайджесты отключаются, если отправляется любое другое письмо:  
[Need to confirm that digest mails are being sent - support - Discourse Meta](https://meta.discourse.org/t/need-to-confirm-that-digest-mails-are-being-sent/71651)

Правильно ли я понимаю, что уведомительное письмо считается активностью пользователя, из-за чего дайджест пропускается? Если да, то это не то поведение, которое я ожидал…

Мы используем настройку «Следить за первым сообщением» для конкретного тега, чтобы уведомлять пользователей о темах высокого приоритета, но при этом хотим, чтобы они получали регулярный дайджест другой активности на форуме.

Это крайне важно для нашей концепции — буду рад любым предложениям о том, как это реализовать.

---

<div class="post-metadata">

### Author: ![nathank](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nathank/32/290039_2.png) [@nathank](https://meta.discourse.org/u/nathank)
#### Post date: [26.Январь.2024 12:41:19 UTC](https://meta.discourse.org/t/activity-summary-not-sent-if-other-emails-are-sent/293040/2 "2024-01-26T12:41:19Z")

</div>

> [@ToddZ](#):
>
> Верно ли, что уведомительное письмо считается активностью пользователя, из-за чего дайджест пропускается?

Да, это так. Я разделяю ваши опасения и ранее просил сделать эту настройку конфигурируемой.

На данный момент настройка предустановленных подписок несколько затрудняет эффективное использование дайджеста/сводки. И это не должно быть так.

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [26.Январь.2024 15:39:55 UTC](https://meta.discourse.org/t/activity-summary-not-sent-if-other-emails-are-sent/293040/3 "2024-01-26T15:39:55Z")

</div>

> [@Натан Кёршоу](#):
>
> На данный момент настройка предустановленного просмотра несколько мешает эффективному использованию дайджеста/резюме. И этого не должно быть.

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

---

<div class="post-metadata">

### Author: ![nathank](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nathank/32/290039_2.png) [@nathank](https://meta.discourse.org/u/nathank)
#### Post date: [26.Январь.2024 15:48:21 UTC](https://meta.discourse.org/t/activity-summary-not-sent-if-other-emails-are-sent/293040/4 "2024-01-26T15:48:21Z")

</div>

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

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

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

---

<div class="post-metadata">

### Author: ![ToddZ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/toddz/32/328350_2.png) [@ToddZ](https://meta.discourse.org/u/ToddZ)
#### Post date: [26.Январь.2024 19:17:45 UTC](https://meta.discourse.org/t/activity-summary-not-sent-if-other-emails-are-sent/293040/5 "2024-01-26T19:17:45Z")

</div>

Спасибо за подтверждение, Нейтан. Да, дайджест не был отправлен, несмотря на наличие _других_ новых подходящих тем.

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

@pfaffman — похоже ли это на правило, которое можно как-то обойти? Или здесь потребуется внимание разработчиков?

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [26.Январь.2024 19:41:32 UTC](https://meta.discourse.org/t/activity-summary-not-sent-if-other-emails-are-sent/293040/6 "2024-01-26T19:41:32Z")

</div>

> [@ToddZ](#):
>
> Звучит ли это как правило, которое можно как-то обойти?

Для этого потребуется плагин. Я однажды написал один, который, по крайней мере на тот момент, «добавлял количество новых постов в сводное/резюме-письмо на третье место (обычно туда, где указывается число новых пользователей)». Таким образом, он меняет только этот заголовок в верхней части страницы.

Он переопределяет весь шаблон, так что это потенциальное решение.

[https://staging.community.pianogroove.com/admin/email/preview-digest](https://staging.community.pianogroove.com/admin/email/preview-digest)

Если вам нужно что-то подобное, вы можете обратиться ко мне или в канал #Marketplace.

---

<div class="post-metadata">

### Author: ![ToddZ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/toddz/32/328350_2.png) [@ToddZ](https://meta.discourse.org/u/ToddZ)
#### Post date: [26.Январь.2024 22:32:44 UTC](https://meta.discourse.org/t/activity-summary-not-sent-if-other-emails-are-sent/293040/8 "2024-01-26T22:32:44Z")

</div>

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

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

- отключать письмо-дайджест через N дней
- отключать категории для дайджеста
- отключать теги для дайджеста

Что ещё важнее, настройка пользователя в разделе Электронная почта | Сводка активности гласит: _ **«Когда я не захожу на сайт, отправлять мне сводку популярных тем и ответов по электронной почте»** _. Да или нет, точка. Никакой связи с отслеживанием писем не указано.

* * *

 ![image](https://global.discourse-cdn.com/meta/original/4X/7/1/a/71a8fb209f30cb9f29cd81a920925538002ac955.png)

* * *

Исходя из этих настроек, пользователи должны ожидать, что параметр «Сводка активности» будет применяться именно так, как описано, и независимо.

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

---

<div class="post-metadata">

### Author: ![ToddZ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/toddz/32/328350_2.png) [@ToddZ](https://meta.discourse.org/u/ToddZ)
#### Post date: [28.Январь.2024 08:36:45 UTC](https://meta.discourse.org/t/activity-summary-not-sent-if-other-emails-are-sent/293040/9 "2024-01-28T08:36:45Z")

</div>

Я, возможно, лезу не в своё дело, но из любопытства изучаю код на Github…

В разделе digest файла _app/mailers/user\_notifications.rb_  
`topics_for_digest` ищутся на основе `min_date`, который учитывает `user.last_emailed_at`.

строка 227:

```rb
    min_date = opts[:since] || user.last_emailed_at || user.last_seen_at || 1.month.ago

    # Получаем некоторые темы и посты для отображения
    digest_opts = {
      limit: SiteSetting.digest_topics + SiteSetting.digest_other_topics,
      top_order: true,
    }
    topics_for_digest = Topic.for_digest(user, min_date, digest_opts).to_a
    if topics_for_digest.empty? && !user.user_option.try(:include_tl0_in_digests)
      # Ищем темы от новых пользователей, которым уже хотя бы 24 часа
      topics_for_digest =
        Topic
          .for_digest(user, min_date, digest_opts.merge(include_tl0: true))
          .where("topics.created_at < ?", 24.hours.ago)
          .to_a
    end

```

(Редактирование: Я вижу, что `last_emailed_at` также упоминается в файлах _app/jobs/scheduled/enqueue\_digest\_emails.rb_ и _spec/jobs/enqueue\_digest\_emails\_spec.rb_, среди прочего.)

Это заставляет меня подумать, что дайджест просто не генерируется для пользователей, у которых `user.last_emailed_at` слишком свежий.

Мне не удалось выяснить, какие именно письма учитываются в `last_emailed_at`. Очевидно, сюда входят уведомления на основе настроек отслеживания, но что насчёт личных сообщений и прочего?

Разве дайджест должен учитывать только `user.last_seen_at`?

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [29.Январь.2024 05:12:33 UTC](https://meta.discourse.org/t/activity-summary-not-sent-if-other-emails-are-sent/293040/10 "2024-01-29T05:12:33Z")

</div>

> [@ToddZ](#):
>
> Разве сводка должна учитывать только `user.last_seen_at`?

Да, это похоже на баг, учитывая то, что мы написали в заголовке:

 ![image](https://global.discourse-cdn.com/meta/original/4X/2/8/1/2812b7e76f02a6cac8bb24e4f9a69e71efdde2db.png)

Интересно, какой уровень детализации должны иметь конечные пользователи в этом случае:

> Отправлять мне сводки: Всегда | Когда меня нет рядом | Пока это единственное письмо от вас в этом месяце

Крайний случай кажется намеренным и, вероятно, связан с использованием Discourse в качестве рассылки.

Я думаю, что нам нужно сначала тщательно определить эту функцию. Перемещаю тему в раздел «Функции» и добавляю тег «опыт участников».

---

<div class="post-metadata">

### Author: ![ToddZ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/toddz/32/328350_2.png) [@ToddZ](https://meta.discourse.org/u/ToddZ)
#### Post date: [29.Январь.2024 18:34:11 UTC](https://meta.discourse.org/t/activity-summary-not-sent-if-other-emails-are-sent/293040/11 "2024-01-29T18:34:11Z")

</div>

Спасибо, Сэм!

В настоящее время, когда включен режим рассылки по электронной почте — по крайней мере, на уровне предпочтений пользователя (см. следующий пост) — интерфейс четко указывает, что настройки дайджеста переопределяются.

Поэтому, возможно, стоит добавить только опцию «всегда отправлять», например:

**Сводка активности:**  
[] Всегда отправлять мне дайджест по электронной почте  
[] Отправлять дайджест по электронной почте только в том случае, если я не заходил сюда  
(Выпадающий список): каждые 30 минут | ежечасно | ежедневно | еженедельно | ежемесячно | каждые шесть месяцев

Но я бы рассматривал опцию «всегда» как желательную, но не обязательную. Достаточно сделать дайджест независимым от других писем, чтобы он работал как положено.

_(Кстати: если бы у меня был большой форум, я бы хотел, чтобы администратор мог настраивать доступные временные интервалы. Слишком много людей, выбирающих «всегда отправлять… каждые 30 минут», могли бы привести к значительным расходам на рассылку.)_

---

<div class="post-metadata">

### Author: ![ToddZ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/toddz/32/328350_2.png) [@ToddZ](https://meta.discourse.org/u/ToddZ)
#### Post date: [30.Январь.2024 15:32:14 UTC](https://meta.discourse.org/t/activity-summary-not-sent-if-other-emails-are-sent/293040/12 "2024-01-30T15:32:14Z")

</div>

Это вторично по отношению к моей сообщённой проблеме, но связано с беспокойством Сэма относительно режима почтового списка и сводки активности…

Интересно, что когда администратор включает «режим почтового списка по умолчанию» _и_ «отключить режим почтового списка» (Сценарий A), неясно, что происходит. Пользователь не видит никакой информации о режиме почтового списка и, по-видимому, всё ещё может включить сводку активности и другие уведомления по электронной почте.

Два параметра администратора, похоже, независимы, хотя, возможно, между ними должна быть зависимость… переопределяет ли настройка «запретить пользователям включать режим почтового списка» настройку «режим почтового списка по умолчанию»?

## Сценарий A

Настройки администратора, «почтовый список»:

 ![image](https://global.discourse-cdn.com/meta/original/4X/6/4/5/645ac3c619f8980111460aaeb17be517136ab450.png)

Настройки пользователя | Электронная почта:

 ![image](https://global.discourse-cdn.com/meta/original/4X/f/7/2/f72c73cba9c8dbbae6a93fadf025600bed86ee94.png)

* * *

Однако, если администратор оставляет опцию «отключить режим почтового списка» снятой, пользователь видит, что для него по умолчанию включён «режим почтового списка». Это кажется достаточно понятным.

## Сценарий B

Настройки администратора, «почтовый список»:

 ![image](https://global.discourse-cdn.com/meta/original/4X/4/9/4/4944570b09901c36dcc38e391b4537b0214309e9.png)

Настройки пользователя | Электронная почта:

 ![image](https://global.discourse-cdn.com/meta/original/4X/e/8/3/e83c597a20b613573ed18420b8f9a9c919d4faa0.png)

Похоже, в Сценарии A чего-то не хватает, что указывало бы на то, действительно ли активен режим почтового списка. (Если только я сам чего-то не упускаю.)

---

<div class="post-metadata">

### Author: ![ToddZ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/toddz/32/328350_2.png) [@ToddZ](https://meta.discourse.org/u/ToddZ)
#### Post date: [09.Март.2024 07:23:56 UTC](https://meta.discourse.org/t/activity-summary-not-sent-if-other-emails-are-sent/293040/13 "2024-03-09T07:23:56Z")

</div>

Привет, команда по работе с участниками — просто хочу уточнить, попало ли это в очередь для дальнейшего рассмотрения?

---

<div class="post-metadata">

### Author: ![ToddZ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/toddz/32/328350_2.png) [@ToddZ](https://meta.discourse.org/u/ToddZ)
#### Post date: [02.Апрель.2024 04:38:38 UTC](https://meta.discourse.org/t/activity-summary-not-sent-if-other-emails-are-sent/293040/15 "2024-04-02T04:38:38Z")

</div>

Просто напоминаю, чтобы убедиться, что это у вас на контроле…

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [02.Апрель.2024 04:52:02 UTC](https://meta.discourse.org/t/activity-summary-not-sent-if-other-emails-are-sent/293040/16 "2024-04-02T04:52:02Z")

</div>

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

На данный момент в мире #pr-welcome действует принцип «попробуйте сами», а затем мы можем рассмотреть возможность включения.

---

<div class="post-metadata">

### Author: ![ToddZ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/toddz/32/328350_2.png) [@ToddZ](https://meta.discourse.org/u/ToddZ)
#### Post date: [02.Апрель.2024 08:17:40 UTC](https://meta.discourse.org/t/activity-summary-not-sent-if-other-emails-are-sent/293040/17 "2024-04-02T08:17:40Z")

</div>

Спасибо за обновление, Сэм. Жаль, что у меня нет навыков, чтобы разработать и предложить PR.

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

---

<div class="post-metadata">

### Author: ![lindsey](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lindsey/32/318210_2.png) [@lindsey](https://meta.discourse.org/u/lindsey)
#### Post date: [02.Апрель.2024 15:46:52 UTC](https://meta.discourse.org/t/activity-summary-not-sent-if-other-emails-are-sent/293040/18 "2024-04-02T15:46:52Z")

</div>

Привет, @ToddZ — приношу извинения за молчание с моей стороны. Спасибо, что подняли этот вопрос.

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

---

<div class="post-metadata">

### Author: ![ToddZ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/toddz/32/328350_2.png) [@ToddZ](https://meta.discourse.org/u/ToddZ)
#### Post date: [02.Апрель.2024 20:22:38 UTC](https://meta.discourse.org/t/activity-summary-not-sent-if-other-emails-are-sent/293040/20 "2024-04-02T20:22:38Z")

</div>

Спасибо, @lindsey! Я понимаю, что сориентироваться в оценочных сроках непросто — рад, что работа над этим уже ведётся, и буду ждать обновлений. 😃

---

<div class="post-metadata">

### Author: ![zogstrip](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/zogstrip/32/512781_2.png) [@zogstrip](https://meta.discourse.org/u/zogstrip)
#### Post date: [06.Май.2024 11:14:57 UTC](https://meta.discourse.org/t/activity-summary-not-sent-if-other-emails-are-sent/293040/21 "2024-05-06T11:14:57Z")

</div>

Спасибо @ToddZ за отчет 👍

Это будет исправлено в

> <https://github.com/discourse/discourse/pull/26879>
>
> instead of "last emailed" so that people getting email notifications (from a wat…ched topic for example) also get the activity summaries.
> 
> Context - https://meta.discourse.org/t/activity-summary-not-sent-if-other-emails-are-sent/293040
> 
> Internal Ref - t//125582

---

<div class="post-metadata">

### Author: ![JammyDodger](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/jammydodger/32/254611_2.png) [@JammyDodger](https://meta.discourse.org/u/JammyDodger)
#### Post date: [11.Май.2024 07:00:39 UTC](https://meta.discourse.org/t/activity-summary-not-sent-if-other-emails-are-sent/293040/22 "2024-05-11T07:00:39Z")

</div>

Эта тема была автоматически закрыта через 44 часа. Новые ответы больше не принимаются.

---

<div class="post-metadata">

### Author: ![zogstrip](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/zogstrip/32/512781_2.png) [@zogstrip](https://meta.discourse.org/u/zogstrip)
#### Post date: [18.Июль.2024 09:28:05 UTC](https://meta.discourse.org/t/activity-summary-not-sent-if-other-emails-are-sent/293040/25 "2024-07-18T09:28:05Z")

</div>

@ToddZ напомнил, что я забыл обновить эту тему.

Этот коммит был отменён, но затем этот PR исправил это раз и навсегда

> <https://github.com/discourse/discourse/pull/27035>
>
> instead of "last emailed" so that people getting email notifications (from a wat…ched topic for example) also get the activity summaries.
> 
> Context - https://meta.discourse.org/t/activity-summary-not-sent-if-other-emails-are-sent/293040
> 
> Internal Ref - t/125582
> 
> Improvement over https://github.com/discourse/discourse/commit/95885645d92cc84e69cb9ecffeaec8f69fe8d286
