diff --git a/Multiplatform/iOS/Article/WebViewController.swift b/Multiplatform/iOS/Article/WebViewController.swift
index cd5ecf160..18d8c44c4 100644
--- a/Multiplatform/iOS/Article/WebViewController.swift
+++ b/Multiplatform/iOS/Article/WebViewController.swift
@@ -315,7 +315,7 @@ extension WebViewController: WKNavigationDelegate {
 			} else if components?.scheme == "mailto" {
 				decisionHandler(.cancel)
 				
-				guard let emailAddress = URL(string: (url.emailAddress?.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed))!) else {
+				guard let emailAddress = url.percentEncodedEmailAddress else {
 					return
 				}
 				
diff --git a/Shared/Extensions/URL-Extensions.swift b/Shared/Extensions/URL-Extensions.swift
index bbe70a1b1..707877cca 100644
--- a/Shared/Extensions/URL-Extensions.swift
+++ b/Shared/Extensions/URL-Extensions.swift
@@ -15,6 +15,11 @@ extension URL {
 		scheme == "mailto" ? URLComponents(url: self, resolvingAgainstBaseURL: false)?.path : nil
 	}
 	
+	/// Percent encoded `mailto` URL for use with `canOpenUrl`. If the URL doesn't contain the `mailto` scheme, this is `nil`.
+	var percentEncodedEmailAddress: URL? {
+		scheme == "mailto" ? self.string.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)?.url : nil
+	}
+	
 	/// URL pointing to current app version release notes.
 	static var releaseNotes: URL {
 		let appVersion = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as? String ?? ""
diff --git a/iOS/Article/WebViewController.swift b/iOS/Article/WebViewController.swift
index fbe56fff9..6024d02dd 100644
--- a/iOS/Article/WebViewController.swift
+++ b/iOS/Article/WebViewController.swift
@@ -356,7 +356,7 @@ extension WebViewController: WKNavigationDelegate {
 			} else if components?.scheme == "mailto" {
 				decisionHandler(.cancel)
 				
-				guard let emailAddress = URL(string: (url.emailAddress?.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed))!) else {
+				guard let emailAddress = url.percentEncodedEmailAddress else {
 					return
 				}