중복 없는 대량 이메일

회원이 관심 있는 그룹과 하위 카테고리를 선택했다고 상상해 보세요.

저는 해당 그룹과 하위 카테고리 중 하나를 선택한 사람들에게 공지사항을 보내고 싶습니다.

예: 전 세계 주요 도시로 이루어진 도시에는 여러 구(borough)와 사안(matter)이 있습니다.
구-사안별로 특정된 그룹도 있을 것입니다.

사용자는 다음을 선택할 수 있습니다:

  • 특정 사안 (일반 그룹으로 취급됨)
  • 해당 사안에 대해 본인의 구에 속한 그룹
  • 해당 사안에 대해 다른 두 구에 속한 그룹
  • 두 번째 특정 사안 (일반 그룹으로 취급됨)
  • 해당 사안에 대해 모든 구의 모든 그룹
  • 주요 도시의 메인 그룹

이 그룹들 중 하나 이상의 그룹 또는 하위 카테고리에 이메일을 보내고자 할 경우, 특히 모든 구와 사안에서 정보를 전달하는 주요 도시 그룹을 선택한 사람이라면, 같은 공지사항에 대한 이메일을 여러 번 받을 수 있습니다. (여기에 일부 하위 그룹이 추가되는 경우 등)

질문: 여러 대상 그룹 및 하위 카테고리 목록을 다루는 메일링을 중복 없이 준비하고 해당 메시지를 보내는 방법은 무엇인가요?

  1. 외부 스크립트를 사용해야 하나요?

  2. 외부 이메일 처리기를 사용해야 하나요?

감사합니다

Marc

임의의 그룹 및 카테고리 집합에서 중복 없는 전달을 보장해야 하는 경우 다음을 수행해야 합니다.

  • 대상 그룹 또는 카테고리에서 사용자 목록을 내보냅니다.
  • 이러한 목록을 수동 또는 스크립트를 사용하여 병합하고 중복을 제거합니다.
  • 외부 이메일 처리기를 사용하여 중복이 제거된 목록으로 메시지를 전송합니다.

이는 사용자가 동일한 공지 사항을 여러 번 받지 않도록 보장하는 가장 확실한 방법입니다.

감사합니다. API를 통해 자동화가 가능한지 궁금합니다. 예를 들어, 새 회원 가입/탈퇴 또는 그룹/카테고리 선택 시마다 메시지를 요청하는 방식입니다. 이 경우 새로운 변경 사항만 수신하거나 (덜 이상적이지만) 전체 목록을 그룹/카테고리와 함께 수신할 수 있으며, 이를 Python 프로그램으로 요청할 수 있습니다.

(Python 코딩은 할 수 있습니다.) 질문의 핵심은 Discourse와 Python 사이, 그리고 Python과 메일링 프로세서 사이의 통신을 자동화하는 방법에 대한 것입니다.

Discourse는 다음 기능을 사용할 수 있는 강력한 REST API를 제공합니다:

  • 모든 사용자, 그룹 및 사용자-그룹 소속 정보 나열
  • 새로운 사용자 등록 및 그룹 가입/탈퇴 동작 모니터링 (폴링 또는 웹훅을 통해)
  • 카테고리 소속 구성 정보 검색

전체 목록을 조회하거나 최근 변경 사항을 추적하는 것을 시도할 수 있습니다. 완전한 증분 변경 감지를 위해서는 시간 기반 체크를 구현하고 로컬에서 차이를 관리해야 할 수 있습니다. 인증은 HTTP 헤더(Api-Key, Api-Username)를 통해 처리됩니다.

그러나 더 효율적이고 통합된 제어를 위해 사용자 정의 Discourse 플러그인을 만드는 것을 권장합니다. 플러그인은 Discourse 서버 환경 내에서 실행되며 Discourse 내부 구조에 대한 직접적인 접근을 제공합니다. 예를 들어:

  • 사용자, 그룹 및 카테고리 소속 업데이트
  • 등록 및 그룹 변경을 위한 라이프사이클 이벤트 훅
  • Discourse의 내부 API 및 데이터베이스에 대한 직접 접근

이 접근 방식은 메일 처리나 사용자 세분화과 같은 자동화 워크플로우 구현에 대해 실시간 기능과 더 큰 유연성을 제공합니다.

  1. Discourse에서 호스팅되는 플러그인이라도 우리 인스턴스에서 작동할 수 있나요, 아니면 직접 호스팅해야 하나요?

  2. 이메일 발송을 위해 플러그인이 생성한 목록을 내보내야 하나요?

  3. 플러그인은 어떤 역할을 하나요? Discourse 서버 내에서 긴 목록을 만들 수 있나요? 아니면 정보를 다른 서버로 보내는 개념인가요?

감사합니다

비공식 플러그인이라면 Enterprise 플랜에서만 설치할 수 있다고 생각합니다. 그렇지 않으면 직접 호스팅해야 합니다.

  • 동적 목록(사용자/그룹/카테고리 데이터)을 생성하여 Discourse 내에서 표시하거나 저장합니다.
  • 데이터를 파일로 내보내거나 다운로드 가능한 관리자 보고서를 생성합니다.
  • 다른 서버로 HTTP(S) 요청을 보냅니다(예: 사용자 목록 업데이트를 Python/이메일 도구로 푸시).
  • 웹훅 트리거, 작업 예약 또는 외부 API와 직접 통합—all은 Discourse 안에서 수행되며 폴링이 필요하지 않습니다.

@EMHmark7 이 문제를 어떻게 해결할지 방법을 찾으셨나요?

Discourse에서 원하는 기능을 구현하는 방법 중 하나는 카테고리를 생성하고, 커뮤니티 멤버들이 해당 카테고리에 "구독"하도록 하는 것입니다. 이를 위해 알림 수준을 "watching"으로 설정하면 됩니다. Default categories watching 또는 Default categories watching first post 설정은 사이트에 공지사항 카테고리를 만들어 모든 사용자에게 도달하게 하는 데 유용합니다.

그룹 멤버십이나 기타 기준에 따라 위 사항을 관리하는 방법도 있다고 생각하지만, 제가 직접 해본 지 꽤 오래 되어 정확하지 않습니다. 다른 누군가가 공유할 수 있는 방법이 있을 수도 있습니다.

또 다른 접근 방식은 그룹에 직접 개인 메시지(PM)를 보내는 것입니다. 여러 그룹에 속한 동일한 멤버에게 메시지를 보내더라도 중복 전송되지 않습니다.

하지만 원하시는 것이 사람들이 로그인하여 토론에 참여하는 포럼이나 커뮤니티가 아니라, 이메일을 발송하는 메일링 리스트 모음이이라면, 다른 도구를 찾고 계신 것 같습니다.

이 모든 것은 Discourse 외부의 코드에 배치할 수 있으므로 설치할 필요가 없습니다. WordPress를 사용 중이라면 https://github.com/discourse/wp-discourse를 사용하면 이 중 상당 부분을 무료로 사용할 수 있으며, 메일링 리스트 부분은 다른 WordPress 플러그인을 사용하여 처리할 수 있습니다.