Atualização / Passos de Reprodutibilidade (Discourse 3.6)
Executei uma repro explícita para isso usando o console Rails para confirmar o que está acontecendo no nível do job. Veja o que vemos para o usuário afetado:
site: hvac
agora: 2025-10-15 17:23:01 UTC
disable_emails: “no”
disable_digest_emails: false
default_email_digest_frequency_minutes: 10080
ENV_DISABLE_EMAILS: nil
perform_deliveries: nil
smtp_address: “smtp.netcorecloud.net”
smtp_port: 587
– USUÁRIO –
id: 42122
username: milnerlarry
active: true
suspended: false
email_digests: true
digest_after_minutes: 10080
eligible_by_time: true
– ÚLTIMOS 15 LOGS DE E-MAIL –
2025-10-01 | type=digest | bounced=false
2025-09-22 | type=digest | bounced=false
perform_deliveries_now: true
Em seguida, quando forcei a construção do resumo manualmente, o Discourse pensa que está construindo, mas retorna:
mail = UserNotifications.digest(u)
=> Built digest mail: subject=nil bytes=50
Portanto, o Discourse pensa que está construindo o resumo, mas ele está efetivamente vazio (subject=nil) — e, portanto, é silenciosamente ignorado quando o job é executado. Nenhuma entrada EmailLog é criada e nada é enviado.
Isso confirma:
-
O job é enfileirado com sucesso
-
SMTP e entregas estão habilitados
-
O job de resumo sai sem erro porque o serviço de e-mail retorna um resumo em branco
Executar o job inline com:
Jobs::UserEmail.new.execute(“type” => “digest”, “user_id” => u.id”)
produz o mesmo resultado — nenhuma nova linha EmailLog criada.
Causa Possível:
Parece que o resumo está sendo ignorado devido a uma condição de “resumo vazio” — talvez algo tenha mudado na forma como o Discourse 3.6 avalia o conteúdo para inclusão. A visualização Admin → Emails → Testar Resumo renderiza o resumo corretamente, mas o job em segundo plano não vê nada para incluir.
Resumo:
Usuário elegível
E-mail ativo + SMTP válido
Teste de Resumo do Admin renderiza corretamente
Job de resumo em segundo plano ignora silenciosamente (resumo vazio)
Nenhuma tentativa de EmailLog ou envio registrada
Gostaria de confirmação da equipe — há possivelmente uma regressão em como o UserNotifications.digest coleta conteúdo no 3.6?