Dealing with email in development
Sent emails
To view rendered emails "sent" in your development instance, visit
/rails/letter_opener
.
Mailer previews
Rails provides a way to preview our mailer templates in HTML and plaintext using dummy data.
The previews live in app/mailers/previews
and can be viewed at
/rails/mailers
.
See the Rails guides for more info.
Incoming email
-
Go to the GitLab installation directory.
-
Find the
incoming_email
section inconfig/gitlab.yml
, enable the feature and fill in the details for your specific IMAP server and email account:Configuration for Gmail / Google Apps, assumes mailbox 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. # The placeholder can be omitted but if present, it must appear in the "user" part of the address (before the `@`). 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
As mentioned, the part after
+
is ignored, and this will end up in the mailbox forgitlab-incoming@gmail.com
. -
Run this command in the GitLab root directory to launch
mail_room
:bundle exec mail_room -q -c config/mail_room.yml
-
Verify that everything is configured correctly:
bundle exec rake gitlab:incoming_email:check RAILS_ENV=development
-
Reply by email should now be working.
Email namespace
If you need to implement a new feature which requires a new email handler, follow these rules:
- You must choose a namespace. The namespace cannot contain
/
or+
, and cannot match\h{16}
. - If your feature is related to a project, you will append the namespace after the project path, separated by a
+
- If you have different actions in the namespace, you add the actions after the namespace separated by a
+
. The action name cannot contain/
or+
, , and cannot match\h{16}
. - You will register your handlers in
lib/gitlab/email/handler.rb
Therefore, these are the only valid formats for an email handler:
path/to/project+namespace
path/to/project+namespace+action
namespace
namespace+action
Please note that path/to/project
is used in GitLab Premium as handler for the Service Desk feature.