diff --git a/OliverBooth/Controllers/ContactController.cs b/OliverBooth/Controllers/ContactController.cs
new file mode 100644
index 0000000..0f11dc5
--- /dev/null
+++ b/OliverBooth/Controllers/ContactController.cs
@@ -0,0 +1,71 @@
+using MailKitSimplified.Sender.Services;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.Extensions.Primitives;
+
+namespace OliverBooth.Controllers;
+
+[Controller]
+[Route("contact/submit")]
+public class ContactController : Controller
+{
+ private readonly ILogger _logger;
+ private readonly IConfiguration _configuration;
+ private readonly IConfigurationSection _destination;
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The logger.
+ /// The configuration.
+ public ContactController(ILogger logger, IConfiguration configuration)
+ {
+ _logger = logger;
+ _configuration = configuration;
+ _destination = configuration.GetSection("Mail").GetSection("Destination");
+ }
+
+ [HttpGet("{_?}")]
+ public IActionResult OnGet(string _)
+ {
+ _logger.LogWarning("Method GET for endpoint {Path} is not supported!", Request.Path);
+ return RedirectToPage("/Contact/Index");
+ }
+
+ [HttpPost("other")]
+ public async Task HandleMiscellaneous()
+ {
+ if (!Request.HasFormContentType)
+ {
+ return RedirectToPage("/Contact/Other");
+ }
+
+ IFormCollection form = Request.Form;
+ StringValues name = form["name"];
+ StringValues email = form["email"];
+ StringValues subject = form["subject"];
+ StringValues message = form["message"];
+
+ await using SmtpSender sender = CreateSender();
+ await sender.WriteEmail
+ .To("Oliver Booth", _destination.GetValue("Other"))
+ .From(name, email)
+ .Subject(subject)
+ .BodyHtml(message)
+ .SendAsync();
+
+ TempData["Success"] = true;
+ return RedirectToPage("/Contact/Result");
+ }
+
+ private SmtpSender CreateSender()
+ {
+ IConfigurationSection mailSection = _configuration.GetSection("Mail");
+ string? mailServer = mailSection.GetSection("Server").Value;
+ string? mailUsername = mailSection.GetSection("Username").Value;
+ string? mailPassword = mailSection.GetSection("Password").Value;
+
+ var sender = SmtpSender.Create(mailServer);
+ sender.SetCredential(mailUsername, mailPassword);
+ return sender;
+ }
+}
diff --git a/OliverBooth/Pages/Contact/Other.cshtml b/OliverBooth/Pages/Contact/Other.cshtml
index c580480..ad08cc7 100644
--- a/OliverBooth/Pages/Contact/Other.cshtml
+++ b/OliverBooth/Pages/Contact/Other.cshtml
@@ -18,7 +18,7 @@
can.
-