Skip to content

Commit 6459cb5

Browse files
committed
feat: implement mailer contact form
1 parent 04a6498 commit 6459cb5

File tree

5 files changed

+74
-0
lines changed

5 files changed

+74
-0
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# frozen_string_literal: true
2+
3+
module Api
4+
module V1
5+
# Handles public contact form submissions from prostaff.gg/contact
6+
class ContactController < ApplicationController
7+
def create
8+
name = params.require(:name)
9+
email = params.require(:email)
10+
subject = params.require(:subject)
11+
message = params.require(:message)
12+
13+
ContactMailer.new_message(
14+
name: name,
15+
email: email,
16+
subject: subject,
17+
message: message
18+
).deliver_later
19+
20+
render json: { message: 'Message sent successfully' }, status: :ok
21+
rescue ActionController::ParameterMissing => e
22+
render json: { error: { message: "Missing required parameter: #{e.param}" } }, status: :bad_request
23+
end
24+
end
25+
end
26+
end

app/mailers/contact_mailer.rb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# frozen_string_literal: true
2+
3+
# Mailer for contact form submissions from prostaff.gg/contact
4+
class ContactMailer < ApplicationMailer
5+
def new_message(name:, email:, subject:, message:)
6+
@name = name
7+
@email = email
8+
@subject = subject
9+
@message = message
10+
11+
mail(
12+
to: ENV.fetch('ADMIN_EMAIL', 'hello@prostaff.gg'),
13+
reply_to: email,
14+
subject: "[ProStaff Contact] #{subject}"
15+
)
16+
end
17+
end
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<h2>New Contact Form Submission</h2>
2+
3+
<p><strong>From:</strong> <%= @name %> &lt;<%= @email %>&gt;</p>
4+
<p><strong>Subject:</strong> <%= @subject %></p>
5+
6+
<hr>
7+
8+
<p><%= simple_format(@message) %></p>
9+
10+
<hr>
11+
12+
<p style="color: #888; font-size: 12px;">
13+
This message was sent via the contact form at prostaff.gg/contact.<br>
14+
Reply directly to this email to respond to <%= @name %>.
15+
</p>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
New Contact Form Submission
2+
===========================
3+
4+
From: <%= @name %> <<%= @email %>>
5+
Subject: <%= @subject %>
6+
7+
---
8+
9+
<%= @message %>
10+
11+
---
12+
This message was sent via the contact form at prostaff.gg/contact.
13+
Reply directly to this email to respond to <%= @name %>.

config/routes.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,9 @@
353353
as: 'meta_champion'
354354
end
355355

356+
# Contact form (public, no auth)
357+
post 'contact', to: 'contact#create'
358+
356359
# Team Messaging -- DM history + soft-delete
357360
resources :messages, only: %i[index destroy],
358361
controller: '/messaging/controllers/messages'

0 commit comments

Comments
 (0)