Add Mailbox::getAddressForMailto()
authorTim Düsterhus <duesterhus@woltlab.com>
Tue, 19 Sep 2023 08:57:33 +0000 (10:57 +0200)
committerTim Düsterhus <duesterhus@woltlab.com>
Tue, 19 Sep 2023 08:57:33 +0000 (10:57 +0200)
wcfsetup/install/files/lib/system/email/Mailbox.class.php

index af8e4f2bb4dd77947b0e8db2fcb0495fd6de9d17..1abf0acc1589ba5b67fd4a17770f8dc63d553317 100644 (file)
@@ -133,6 +133,22 @@ class Mailbox
         return $this->address;
     }
 
+    /**
+     * Returns the properly encoded address for use within
+     * the 'mailto' URI scheme.
+     *
+     * This method takes care to encode the localpart and domain
+     * separately, leaving the '@' as-is.
+     *
+     * @since 6.0
+     */
+    public function getAddressForMailto(): string
+    {
+        [$localpart, $domain] = self::splitLocalpartAndDomain($this->getAddress());
+
+        return \rawurlencode($localpart) . '@' . \rawurlencode($domain);
+    }
+
     /**
      * Returns the language the recipient of this mailbox wants.
      * This is used for localization of the email template.