InfoGrab DocsInfoGrab Docs

개발 환경에서 이메일 사용하기

요약

ActionMailer에서 deliver_later가 호출될 때마다 Sidekiq job이 큐에 추가됩니다. 새 메일러 메서드나 새 메일러를 도입하는 경우에도 동일하게 적용됩니다. 아래 NotificationService 예시에서, 모든 Rails 및 Sidekiq 노드에 업데이트된 코드가 적용되기 전에 배포 중에 이 메일러의 정의에서 인수를 추가하거나 제거하면 문제가 발생할 수 있습니다.

메일러 Sidekiq job과의 호환성 보장#

ActionMailer에서 deliver_later가 호출될 때마다 Sidekiq job이 큐에 추가됩니다. 메일러 인수를 추가하거나 제거해야 하는 경우, 이전 버전 및 이후 버전과의 호환성을 모두 보장하는 것이 중요합니다. 워커의 인수 변경에 관한 Sidekiq 단계를 따르세요.

새 메일러 메서드나 새 메일러를 도입하는 경우에도 동일하게 적용됩니다. 새 워커 추가에 관한 단계를 따르세요. 여기에는 배포 후 문제가 발생했을 때 새 메일러를 비활성화할 수 있도록 새 메서드를 기능 플래그로 감싸는 것도 포함됩니다.

아래 NotificationService 예시에서, 모든 Rails 및 Sidekiq 노드에 업데이트된 코드가 적용되기 전에 배포 중에 이 메일러의 정의에서 인수를 추가하거나 제거하면 문제가 발생할 수 있습니다.

mailer.unknown_sign_in_email(user, ip, time).deliver_later

발송된 이메일#

개발 인스턴스에서 "발송된" 렌더링 이메일을 보려면 /rails/letter_opener를 방문하세요.

S/MIME 서명된 이메일은 현재 letter_opener로는 미리볼 수 없습니다.

메일러 미리보기#

Rails는 샘플 데이터를 사용하여 HTML 및 일반 텍스트 형식으로 메일러 템플릿을 미리볼 수 있는 방법을 제공합니다.

미리보기는 app/mailers/previews에 위치하며, /rails/mailers에서 확인할 수 있습니다.

자세한 내용은 Rails 가이드를 참조하세요.

수신 이메일#

  • GitLab 설치 디렉터리로 이동합니다.

  • config/gitlab.yml에서 incoming_email 섹션을 찾아 기능을 활성화하고, 사용하는 IMAP 서버와 이메일 계정에 맞는 세부 정보를 입력합니다.

    Gmail / Google Apps 구성, 메일함 gitlab-incoming@gmail.com 기준:

incoming_email:
  enabled: true

  # The email address including the %{key} placeholder that will be replaced to reference the
  # item being replied to. This %{key} should be included in its entirety within the email
  # address and not replaced by another value.
  # For example: emailaddress+%{key}@gmail.com.
  # The placeholder must appear in the "user" part of the address (before the `@`). It can be omitted but some features,
  # including Service Desk, may not work properly.
  address: "gitlab-incoming+%{key}@gmail.com"

  # Email account username
  # With third party providers, this is usually the full email address.
  # With self-hosted email servers, this is usually the user part of the email address.
  user: "gitlab-incoming@gmail.com"
  # Email account password
  password: "[REDACTED]"

  # IMAP server host
  host: "imap.gmail.com"
  # IMAP server port
  port: 993
  # Whether the IMAP server uses SSL
  ssl: true
  # Whether the IMAP server uses StartTLS
  start_tls: false

  # The mailbox where incoming mail will end up. Usually "inbox".
  mailbox: "inbox"
  # The IDLE command timeout.
  idle_timeout: 60

  # Whether to expunge (permanently remove) messages from the mailbox when they are marked as deleted after delivery
  expunge_deleted: false

언급된 대로, + 이후의 부분은 무시되며 이 메시지는 gitlab-incoming@gmail.com의 메일함으로 전송됩니다.

  • 계속 진행하기 전에 올바른 버전의 MailRoom이 설치되어 있는지 확인하기 위해 MailRoom Gem 업데이트 섹션을 먼저 읽어보세요. 요약하자면, Gemfilegitlab-mail_room 버전을 최신 gitlab-mail_room으로 일시적으로 업데이트하고 bundle install을 실행해야 합니다. 이는 임시 해결책이므로 이 변경 사항은 커밋하지 마세요.

  • GitLab 루트 디렉터리에서 다음 명령어를 실행하여 mail_room을 실행합니다:

bundle exec mail_room -q -c config/mail_room.yml
  • 모든 것이 올바르게 구성되었는지 확인합니다:
bundle exec rake gitlab:incoming_email:check RAILS_ENV=development
  • 이제 이메일 답장 기능이 작동해야 합니다.

이메일 네임스페이스#

GitLab은 이메일 핸들러 주소의 새로운 형식을 지원합니다. 이는 catch-all 메일함을 지원하기 위해 도입되었습니다.

새 이메일 핸들러가 필요한 기능을 구현해야 하는 경우, 이메일 키 형식에 관한 다음 규칙을 따르세요:

  • 액션은 항상 끝에 위치하며 -로 구분됩니다. 예: -issue 또는 -merge-request

  • 기능이 프로젝트와 관련된 경우, 키는 프로젝트 식별자(프로젝트 경로 슬러그와 프로젝트 ID)로 시작하며 -로 구분됩니다. 예: gitlab-org-gitlab-foss-20

  • 작성자 토큰과 같은 추가 정보는 프로젝트 식별자와 액션 사이에 -로 구분하여 추가할 수 있습니다. 예: gitlab-org-gitlab-foss-20-Author_Token12345678-issue

  • 핸들러는 lib/gitlab/email/handler.rb에 등록합니다.

유효한 이메일 키 예시:

  • gitlab-org-gitlab-foss-20-Author_Token12345678-issue (새 이슈 생성)

  • gitlab-org-gitlab-foss-20-Author_Token12345678-merge-request (새 머지 리퀘스트 생성)

  • 1234567890abcdef1234567890abcdef-unsubscribe (대화 구독 취소)

  • 1234567890abcdef1234567890abcdef (대화에 답장)

-issue- 액션은 GitLab에서 Service Desk 기능의 핸들러로 사용됩니다.

레거시 형식#

이전 레거시 형식은 계속 지원하지만, 새로운 기능에는 레거시 형식을 사용하지 않아야 합니다. 이메일 핸들러에 유효한 레거시 형식은 다음과 같습니다:

  • path/to/project+namespace

  • path/to/project+namespace+action

  • namespace

  • namespace+action

GitLab에서 Service Desk 기능의 핸들러는 path/to/project입니다.

MailRoom Gem 업데이트#

필요할 때 Gem을 빠르게 업데이트할 수 있도록, MailRoom의 포크인 gitlab-mail_room을 사용합니다. 변경 사항을 가능한 한 빨리 업스트림에 반영하고 두 프로젝트를 동기화 상태로 유지하려고 합니다.

MailRoom을 업데이트하려면:


개발 문서로 돌아가기

개발 환경에서 이메일 사용하기

GitLab v19.1
원문 보기
요약

ActionMailer에서 deliver_later가 호출될 때마다 Sidekiq job이 큐에 추가됩니다. 새 메일러 메서드나 새 메일러를 도입하는 경우에도 동일하게 적용됩니다. 아래 NotificationService 예시에서, 모든 Rails 및 Sidekiq 노드에 업데이트된 코드가 적용되기 전에 배포 중에 이 메일러의 정의에서 인수를 추가하거나 제거하면 문제가 발생할 수 있습니다.

메일러 Sidekiq job과의 호환성 보장#

ActionMailer에서 deliver_later가 호출될 때마다 Sidekiq job이 큐에 추가됩니다. 메일러 인수를 추가하거나 제거해야 하는 경우, 이전 버전 및 이후 버전과의 호환성을 모두 보장하는 것이 중요합니다. 워커의 인수 변경에 관한 Sidekiq 단계를 따르세요.

새 메일러 메서드나 새 메일러를 도입하는 경우에도 동일하게 적용됩니다. 새 워커 추가에 관한 단계를 따르세요. 여기에는 배포 후 문제가 발생했을 때 새 메일러를 비활성화할 수 있도록 새 메서드를 기능 플래그로 감싸는 것도 포함됩니다.

아래 NotificationService 예시에서, 모든 Rails 및 Sidekiq 노드에 업데이트된 코드가 적용되기 전에 배포 중에 이 메일러의 정의에서 인수를 추가하거나 제거하면 문제가 발생할 수 있습니다.

mailer.unknown_sign_in_email(user, ip, time).deliver_later

발송된 이메일#

개발 인스턴스에서 "발송된" 렌더링 이메일을 보려면 /rails/letter_opener를 방문하세요.

S/MIME 서명된 이메일은 현재 letter_opener로는 미리볼 수 없습니다.

메일러 미리보기#

Rails는 샘플 데이터를 사용하여 HTML 및 일반 텍스트 형식으로 메일러 템플릿을 미리볼 수 있는 방법을 제공합니다.

미리보기는 app/mailers/previews에 위치하며, /rails/mailers에서 확인할 수 있습니다.

자세한 내용은 Rails 가이드를 참조하세요.

수신 이메일#

  • GitLab 설치 디렉터리로 이동합니다.

  • config/gitlab.yml에서 incoming_email 섹션을 찾아 기능을 활성화하고, 사용하는 IMAP 서버와 이메일 계정에 맞는 세부 정보를 입력합니다.

    Gmail / Google Apps 구성, 메일함 gitlab-incoming@gmail.com 기준:

incoming_email:
  enabled: true

  # The email address including the %{key} placeholder that will be replaced to reference the
  # item being replied to. This %{key} should be included in its entirety within the email
  # address and not replaced by another value.
  # For example: emailaddress+%{key}@gmail.com.
  # The placeholder must appear in the "user" part of the address (before the `@`). It can be omitted but some features,
  # including Service Desk, may not work properly.
  address: "gitlab-incoming+%{key}@gmail.com"

  # Email account username
  # With third party providers, this is usually the full email address.
  # With self-hosted email servers, this is usually the user part of the email address.
  user: "gitlab-incoming@gmail.com"
  # Email account password
  password: "[REDACTED]"

  # IMAP server host
  host: "imap.gmail.com"
  # IMAP server port
  port: 993
  # Whether the IMAP server uses SSL
  ssl: true
  # Whether the IMAP server uses StartTLS
  start_tls: false

  # The mailbox where incoming mail will end up. Usually "inbox".
  mailbox: "inbox"
  # The IDLE command timeout.
  idle_timeout: 60

  # Whether to expunge (permanently remove) messages from the mailbox when they are marked as deleted after delivery
  expunge_deleted: false

언급된 대로, + 이후의 부분은 무시되며 이 메시지는 gitlab-incoming@gmail.com의 메일함으로 전송됩니다.

  • 계속 진행하기 전에 올바른 버전의 MailRoom이 설치되어 있는지 확인하기 위해 MailRoom Gem 업데이트 섹션을 먼저 읽어보세요. 요약하자면, Gemfilegitlab-mail_room 버전을 최신 gitlab-mail_room으로 일시적으로 업데이트하고 bundle install을 실행해야 합니다. 이는 임시 해결책이므로 이 변경 사항은 커밋하지 마세요.

  • GitLab 루트 디렉터리에서 다음 명령어를 실행하여 mail_room을 실행합니다:

bundle exec mail_room -q -c config/mail_room.yml
  • 모든 것이 올바르게 구성되었는지 확인합니다:
bundle exec rake gitlab:incoming_email:check RAILS_ENV=development
  • 이제 이메일 답장 기능이 작동해야 합니다.

이메일 네임스페이스#

GitLab은 이메일 핸들러 주소의 새로운 형식을 지원합니다. 이는 catch-all 메일함을 지원하기 위해 도입되었습니다.

새 이메일 핸들러가 필요한 기능을 구현해야 하는 경우, 이메일 키 형식에 관한 다음 규칙을 따르세요:

  • 액션은 항상 끝에 위치하며 -로 구분됩니다. 예: -issue 또는 -merge-request

  • 기능이 프로젝트와 관련된 경우, 키는 프로젝트 식별자(프로젝트 경로 슬러그와 프로젝트 ID)로 시작하며 -로 구분됩니다. 예: gitlab-org-gitlab-foss-20

  • 작성자 토큰과 같은 추가 정보는 프로젝트 식별자와 액션 사이에 -로 구분하여 추가할 수 있습니다. 예: gitlab-org-gitlab-foss-20-Author_Token12345678-issue

  • 핸들러는 lib/gitlab/email/handler.rb에 등록합니다.

유효한 이메일 키 예시:

  • gitlab-org-gitlab-foss-20-Author_Token12345678-issue (새 이슈 생성)

  • gitlab-org-gitlab-foss-20-Author_Token12345678-merge-request (새 머지 리퀘스트 생성)

  • 1234567890abcdef1234567890abcdef-unsubscribe (대화 구독 취소)

  • 1234567890abcdef1234567890abcdef (대화에 답장)

-issue- 액션은 GitLab에서 Service Desk 기능의 핸들러로 사용됩니다.

레거시 형식#

이전 레거시 형식은 계속 지원하지만, 새로운 기능에는 레거시 형식을 사용하지 않아야 합니다. 이메일 핸들러에 유효한 레거시 형식은 다음과 같습니다:

  • path/to/project+namespace

  • path/to/project+namespace+action

  • namespace

  • namespace+action

GitLab에서 Service Desk 기능의 핸들러는 path/to/project입니다.

MailRoom Gem 업데이트#

필요할 때 Gem을 빠르게 업데이트할 수 있도록, MailRoom의 포크인 gitlab-mail_room을 사용합니다. 변경 사항을 가능한 한 빨리 업스트림에 반영하고 두 프로젝트를 동기화 상태로 유지하려고 합니다.

MailRoom을 업데이트하려면:


개발 문서로 돌아가기