요약 이메일, 신규 사용자 및 SSO

제 Discourse 사이트는 WordPress 사이트의 SSO 클라이언트로 구성되어 있습니다. WordPress 사이트의 회원들이 WordPress에 로그인할 때 Discourse 사용자로 생성되었습니다. 실제로 포럼을 방문한 사용자는 거의 없습니다. 저는 매일 요약 이메일이 발송되도록 설정했으며, 이 설정을 기존 모든 Discourse 사용자에게 소급 적용했습니다. 문제는 이러한 요약 이메일이 실제로 포럼을 방문한 적이 있는 Discourse 계정에만 발송되는 것처럼 보인다는 것입니다. 저는 사용자가 Discourse 내에 계정이 생성되는 즉시 요약 이메일을 받기 시작하도록 하려는 것입니다. 제가 확인한 이메일 발송 동작은 기본 동작이며, 그렇다면 이를 어떻게 해결할 수 있을까요?

사용자가 WordPress에서 Discourse로 첫 로그인하기 전에 Discourse 활성화 이메일에 응답해야 하는지 알고 계신가요? WordPress 사이트에서 기본 WordPress 등록 방법을 사용하지 않는 경우 이 문제가 발생할 수 있습니다. 이는 사용자가 이메일에 응답할 때까지 Discourse에서 active(활성)로 표시되지 않음을 의미합니다. 요약 이메일은 Discourse에서 active(활성)로 표시된 사용자에게만 전송됩니다.

우리 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으로 변경했습니다. 기본적으로 지난 17일 이내에 Discourse에 추가된 사용자들이 이메일을 받았고, 최근에 접속 기록은 있지만 이전에 생성된 일부 사용자들도 이메일을 받았습니다. 이메일을 받지 못한 사용자를 무작위로 선택해 확인해 본 결과, 모든 사용자가 활성화되어 있는 상태임을 확인할 수 있습니다. 어떻게 수정해야 할지 모르겠습니다. 수동으로 초기화할 수 있는 항목이 있을까요?

조금 더 조사해 보니, 빈도를 변경할 때 대부분의 계정에서 요약 이메일 설정이 제대로 반영되지 않는 것 같습니다. 예를 들어, 요약 빈도를 30분에서 1시간으로 변경하고 모든 계정에 적용을 확인하더라도 설정이 적용되지 않는 것으로 보입니다. 이메일을 받지 않는 계정으로 로그인해 확인해 봤더니, 해당 계정들의 설정에는 요약이 꺼져 있는 상태였습니다.