diff --git a/Gemfile b/Gemfile
index d2f381831ce4234423a953fcf5a5a87ec35a1b23..2b3970e6e9a12320a0ab803022a75f1e4b1c93ac 100644
--- a/Gemfile
+++ b/Gemfile
@@ -593,7 +593,7 @@ group :test do
   gem 'graphlyte', '~> 1.0.0', feature_category: :shared
 
   gem 'shoulda-matchers', '~> 5.1.0', require: false, feature_category: :shared
-  gem 'email_spec', '~> 2.2.0', feature_category: :shared
+  gem 'email_spec', '~> 2.3.0', feature_category: :shared
   gem 'webmock', '~> 3.24.0', feature_category: :shared
   gem 'rails-controller-testing', feature_category: :shared
   gem 'concurrent-ruby', '~> 1.1', feature_category: :shared
diff --git a/Gemfile.checksum b/Gemfile.checksum
index 752839a9c9434054ad080e5bb422f4d86f6ce63b..fd7d4572aa262903fb12556b0b5046d18c7c4991 100644
--- a/Gemfile.checksum
+++ b/Gemfile.checksum
@@ -148,7 +148,7 @@
 {"name":"elasticsearch-rails","version":"7.2.1","platform":"ruby","checksum":"0750dc0e956358d9a3a0912a8186c266ef19f8de0b178c61996ed1a6998156e4"},
 {"name":"elasticsearch-transport","version":"7.17.11","platform":"ruby","checksum":"d18057d5295e4c39fe80084ede9e00e9c0e0d74580348985f8677b2fb7f70f03"},
 {"name":"email_reply_trimmer","version":"0.1.6","platform":"ruby","checksum":"9fede222ce660993e4e2e3dad282535ceb7914e246eb8302c19aa9e021f7326e"},
-{"name":"email_spec","version":"2.2.0","platform":"ruby","checksum":"60b7980580a835e7f676db60667f17a2d60e8e0e39c26d81cfc231805c544d79"},
+{"name":"email_spec","version":"2.3.0","platform":"ruby","checksum":"df23be7a131186f7a3d5be3b35eaac9196f9ac13bd26c9c3d59341e13d852d11"},
 {"name":"email_validator","version":"2.2.4","platform":"ruby","checksum":"5ab238095bec7aef9389f230e9e0c64c5081cdf91f19d6c5cecee0a93af20604"},
 {"name":"encryptor","version":"3.0.0","platform":"ruby","checksum":"abf23f94ab4d864b8cea85b43f3432044a60001982cda7c33c1cd90da8db1969"},
 {"name":"erubi","version":"1.12.0","platform":"ruby","checksum":"27bedb74dfb1e04ff60674975e182d8ca787f2224f2e8143268c7696f42e4723"},
diff --git a/Gemfile.lock b/Gemfile.lock
index 9a96f6c6f62fbb8c227ad959fcf8f134fceceb33..af88a076bbc08bf1b9c85f139e17dbabed35f21d 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -575,9 +575,9 @@ GEM
       faraday (>= 1, < 3)
       multi_json
     email_reply_trimmer (0.1.6)
-    email_spec (2.2.0)
+    email_spec (2.3.0)
       htmlentities (~> 4.3.3)
-      launchy (~> 2.1)
+      launchy (>= 2.1, < 4.0)
       mail (~> 2.7)
     email_validator (2.2.4)
       activemodel
@@ -2057,7 +2057,7 @@ DEPENDENCIES
   elasticsearch-model (~> 7.2)
   elasticsearch-rails (~> 7.2)
   email_reply_trimmer (~> 0.1)
-  email_spec (~> 2.2.0)
+  email_spec (~> 2.3.0)
   error_tracking_open_api!
   factory_bot_rails (~> 6.4.3)
   faraday (~> 2)
diff --git a/Gemfile.next.checksum b/Gemfile.next.checksum
index c97a5eacac380953de04df7dd29994b52aa3a0b7..8d9e63229818f379d276f57b0907c1ea7ddd8593 100644
--- a/Gemfile.next.checksum
+++ b/Gemfile.next.checksum
@@ -148,7 +148,7 @@
 {"name":"elasticsearch-rails","version":"7.2.1","platform":"ruby","checksum":"0750dc0e956358d9a3a0912a8186c266ef19f8de0b178c61996ed1a6998156e4"},
 {"name":"elasticsearch-transport","version":"7.17.11","platform":"ruby","checksum":"d18057d5295e4c39fe80084ede9e00e9c0e0d74580348985f8677b2fb7f70f03"},
 {"name":"email_reply_trimmer","version":"0.1.6","platform":"ruby","checksum":"9fede222ce660993e4e2e3dad282535ceb7914e246eb8302c19aa9e021f7326e"},
-{"name":"email_spec","version":"2.2.0","platform":"ruby","checksum":"60b7980580a835e7f676db60667f17a2d60e8e0e39c26d81cfc231805c544d79"},
+{"name":"email_spec","version":"2.3.0","platform":"ruby","checksum":"df23be7a131186f7a3d5be3b35eaac9196f9ac13bd26c9c3d59341e13d852d11"},
 {"name":"email_validator","version":"2.2.4","platform":"ruby","checksum":"5ab238095bec7aef9389f230e9e0c64c5081cdf91f19d6c5cecee0a93af20604"},
 {"name":"encryptor","version":"3.0.0","platform":"ruby","checksum":"abf23f94ab4d864b8cea85b43f3432044a60001982cda7c33c1cd90da8db1969"},
 {"name":"erubi","version":"1.12.0","platform":"ruby","checksum":"27bedb74dfb1e04ff60674975e182d8ca787f2224f2e8143268c7696f42e4723"},
diff --git a/Gemfile.next.lock b/Gemfile.next.lock
index 44393cbcecec1e5a45082fde2f34b89cb2cd8b9c..6cbaddff38a0f3b07706bf072719a0e090613c33 100644
--- a/Gemfile.next.lock
+++ b/Gemfile.next.lock
@@ -587,9 +587,9 @@ GEM
       faraday (>= 1, < 3)
       multi_json
     email_reply_trimmer (0.1.6)
-    email_spec (2.2.0)
+    email_spec (2.3.0)
       htmlentities (~> 4.3.3)
-      launchy (~> 2.1)
+      launchy (>= 2.1, < 4.0)
       mail (~> 2.7)
     email_validator (2.2.4)
       activemodel
@@ -2092,7 +2092,7 @@ DEPENDENCIES
   elasticsearch-model (~> 7.2)
   elasticsearch-rails (~> 7.2)
   email_reply_trimmer (~> 0.1)
-  email_spec (~> 2.2.0)
+  email_spec (~> 2.3.0)
   error_tracking_open_api!
   factory_bot_rails (~> 6.4.3)
   faraday (~> 2)