diff --git a/spec/mailers/previews/devise_mailer_preview.rb b/app/mailers/previews/devise_mailer_preview.rb
similarity index 100%
rename from spec/mailers/previews/devise_mailer_preview.rb
rename to app/mailers/previews/devise_mailer_preview.rb
diff --git a/spec/mailers/previews/email_rejection_mailer_preview.rb b/app/mailers/previews/email_rejection_mailer_preview.rb
similarity index 100%
rename from spec/mailers/previews/email_rejection_mailer_preview.rb
rename to app/mailers/previews/email_rejection_mailer_preview.rb
diff --git a/spec/mailers/previews/notify_preview.rb b/app/mailers/previews/notify_preview.rb
similarity index 98%
rename from spec/mailers/previews/notify_preview.rb
rename to app/mailers/previews/notify_preview.rb
index e32fd0bd12090b1e2d27697a4bb13b1a52d3e3dd..3615cde802641790c2b99fac4280f062dec94da5 100644
--- a/spec/mailers/previews/notify_preview.rb
+++ b/app/mailers/previews/notify_preview.rb
@@ -153,7 +153,7 @@ def note_email(method)
     cleanup do
       note = yield
 
-      Notify.public_send(method, user.id, note)
+      Notify.public_send(method, user.id, note) # rubocop:disable GitlabSecurity/PublicSend
     end
   end
 
diff --git a/spec/mailers/previews/repository_check_mailer_preview.rb b/app/mailers/previews/repository_check_mailer_preview.rb
similarity index 100%
rename from spec/mailers/previews/repository_check_mailer_preview.rb
rename to app/mailers/previews/repository_check_mailer_preview.rb
diff --git a/config/environments/development.rb b/config/environments/development.rb
index 45a8c1add3e44917cdb1f396015eb86eb74b72e9..23790b84e3c530b92f97701bb00a1f66d1abd5c5 100644
--- a/config/environments/development.rb
+++ b/config/environments/development.rb
@@ -39,7 +39,7 @@
   config.action_mailer.delivery_method = :letter_opener_web
   # Don't make a mess when bootstrapping a development environment
   config.action_mailer.perform_deliveries = (ENV['BOOTSTRAP'] != '1')
-  config.action_mailer.preview_path = 'spec/mailers/previews'
+  config.action_mailer.preview_path = 'app/mailers/previews'
 
   config.eager_load = false
 
diff --git a/doc/development/emails.md b/doc/development/emails.md
index 73cac82caf09cad4539c3c0c2374acaea6b53e99..35ada35babe3dade7668b5cb5ba51bdafc0dcdc0 100644
--- a/doc/development/emails.md
+++ b/doc/development/emails.md
@@ -10,12 +10,12 @@ To view rendered emails "sent" in your development instance, visit
 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
+The previews live in [`app/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
+[previews]: https://gitlab.com/gitlab-org/gitlab-ce/tree/master/app/mailers/previews
 [Rails guides]: http://guides.rubyonrails.org/action_mailer_basics.html#previewing-emails
 
 ## Incoming email