97 lines
3.3 KiB
Markdown
97 lines
3.3 KiB
Markdown
# Dealing with email in development
|
|
|
|
## Sent emails
|
|
|
|
To view rendered emails "sent" in your development instance, visit
|
|
[`/rails/letter_opener`](http://localhost:3000/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 [`spec/mailers/previews`][previews] and can be viewed at
|
|
[`/rails/mailers`](http://localhost:3000/rails/mailers).
|
|
|
|
See the [Rails guides] for more info.
|
|
|
|
[previews]: https://gitlab.com/gitlab-org/gitlab-ce/tree/master/spec/mailers/previews
|
|
[Rails guides]: http://guides.rubyonrails.org/action_mailer_basics.html#previewing-emails
|
|
|
|
## Incoming email
|
|
|
|
1. Go to the GitLab installation directory.
|
|
|
|
1. Find the `incoming_email` section in `config/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
|
|
|
|
```yaml
|
|
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 for `gitlab-incoming@gmail.com`.
|
|
|
|
1. Run this command in the GitLab root directory to launch `mail_room`:
|
|
|
|
```sh
|
|
bundle exec mail_room -q -c config/mail_room.yml
|
|
```
|
|
|
|
1. Verify that everything is configured correctly:
|
|
|
|
```sh
|
|
bundle exec rake gitlab:incoming_email:check RAILS_ENV=development
|
|
```
|
|
|
|
1. 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.
|
|
|
|
---
|
|
|
|
[Return to Development documentation](README.md)
|