Commit b7be08c5 authored by Douwe Maan's avatar Douwe Maan
Browse files

Merge branch 'changes_for_gmail_inbox_actions' into 'master'

Changes for gmail inbox actions

Related to the ongoing efforts to get Gmail inbox actions for GitLab.com in #1517

Not using `mdash` would break the rendering of the html email by switching `Content-Transfer-Encoding` to `quoted-printable` for every email.

Removed the rake task and docs to prevent users from sending dummy emails which might cause application rejection.

See merge request !1024
parents 5dd4dea9 ca451365
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -33,7 +33,7 @@
      = yield
    %div.footer{style: "margin-top: 10px;"}
      %p
        \—
        —
        %br
        - if @target_url
          #{link_to "View it on GitLab", @target_url}
−16.9 KiB
Loading image diff...
+0 −28
Original line number Diff line number Diff line
# GitLab buttons in Gmail

GitLab supports [Google actions in email](https://developers.google.com/gmail/markup/actions/actions-overview).

If correctly setup, emails that require an action will be marked in Gmail.

![gitlab_actions](gitlab_actions.png)

To get this functioning, you need to be registered with Google.
[See how to register with Google in this document.](https://developers.google.com/gmail/markup/registering-with-google)

To aid the registering with Google, GitLab offers a rake task that will send an email to Google whitelisting email address from your GitLab server.

To check what would be sent to the Google email address, run the rake task:

```bash
bundle exec rake gitlab:mail_google_schema_whitelisting RAILS_ENV=production
```

**This will not send the email but give you the output of how the mail will look.**

Copy the output of the rake task to [Google email markup tester](https://www.google.com/webmasters/markup-tester/u/0/) and press "Validate".

If you receive "No errors detected" message from the tester you can send the email using:

```bash
bundle exec rake gitlab:mail_google_schema_whitelisting RAILS_ENV=production SEND=true
```
+0 −73
Original line number Diff line number Diff line
require "#{Rails.root}/app/helpers/emails_helper"
require 'action_view/helpers'
extend ActionView::Helpers

include ActionView::Context
include EmailsHelper

namespace :gitlab do
  desc "Email google whitelisting email with example email for actions in inbox"
  task mail_google_schema_whitelisting: :environment do
    subject = "Rails | Implemented feature"
    url = "#{Gitlab.config.gitlab.url}/base/rails-project/issues/#{rand(1..100)}#note_#{rand(10..1000)}"
    schema = email_action(url)
    body = email_template(schema, url)
    mail = Notify.test_email("schema.whitelisting+sample@gmail.com", subject, body.html_safe)
    if send_now
      mail.deliver
    else
      puts "WOULD SEND:"
    end
    puts mail
  end

  def email_template(schema, url)
    "<html lang='en'>
      <head>
        <meta content='text/html; charset=utf-8' http-equiv='Content-Type'>
          <title>
            GitLab
          </title>
        </meta>
      </head>
      <style>
        img {
          max-width: 100%;
          height: auto;
        }
        p.details {
          font-style:italic;
          color:#777
        }
        .footer p {
          font-size:small;
          color:#777
        }
      </style>
      <body>
        <div class='content'>
          <div>
           <p>I like it :+1: </p>
          </div>
        </div>

        <div class='footer' style='margin-top: 10px;'>
          <p>
          <br>
            <a href=\"#{url}\">View it on GitLab</a>
            You're receiving this notification because you are a member of the Base / Rails Project project team.
            #{schema}
          </p>
        </div>
      </body>
    </html>"
  end

  def send_now
    if ENV['SEND'] == "true"
      true
    else
      false
    end
  end
end