diff options
Diffstat (limited to 'app/mailers/emails/members.rb')
-rw-r--r-- | app/mailers/emails/members.rb | 40 |
1 files changed, 34 insertions, 6 deletions
diff --git a/app/mailers/emails/members.rb b/app/mailers/emails/members.rb index 07ce9bba784..3a13c5949bd 100644 --- a/app/mailers/emails/members.rb +++ b/app/mailers/emails/members.rb @@ -51,9 +51,32 @@ module Emails return unless member_exists? - member_email_with_layout( - to: member.invite_email, - subject: subject("Invitation to join the #{member_source.human_name} #{member_source.model_name.singular}")) + subject_line = subject("Invitation to join the #{member_source.human_name} #{member_source.model_name.singular}") + + if member.invite_to_unknown_user? && Feature.enabled?(:invite_email_experiment) + subject_line = subject("#{member.created_by.name} invited you to join GitLab") if member.created_by + @invite_url_params = { new_user_invite: 'experiment' } + + member_email_with_layout( + to: member.invite_email, + subject: subject_line, + template: 'member_invited_email_experiment', + layout: 'experiment_mailer' + ) + + Gitlab::Tracking.event(Gitlab::Experimentation::EXPERIMENTS[:invite_email][:tracking_category], 'sent', property: 'experiment_group') + else + @invite_url_params = member.invite_to_unknown_user? ? { new_user_invite: 'control' } : {} + + member_email_with_layout( + to: member.invite_email, + subject: subject_line + ) + + if member.invite_to_unknown_user? + Gitlab::Tracking.event(Gitlab::Experimentation::EXPERIMENTS[:invite_email][:tracking_category], 'sent', property: 'control_group') + end + end end def member_invite_accepted_email(member_source_type, member_id) @@ -107,10 +130,15 @@ module Emails @member_source_type.classify.constantize end - def member_email_with_layout(to:, subject:) + def member_email_with_layout(to:, subject:, template: nil, layout: 'mailer') mail(to: to, subject: subject) do |format| - format.html { render layout: 'mailer' } - format.text { render layout: 'mailer' } + if template + format.html { render template, layout: layout } + format.text { render template, layout: layout } + else + format.html { render layout: layout } + format.text { render layout: layout } + end end end end |