From 096b333c06325f430d5f997dc4af114de946b463 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Tim=20D=C3=BCsterhus?= Date: Thu, 3 Mar 2022 14:32:42 +0100 Subject: [PATCH] Dump the headers of all body parts in Email::debugDump() --- .../files/lib/system/email/Email.class.php | 57 ++++++++++++++----- 1 file changed, 44 insertions(+), 13 deletions(-) diff --git a/wcfsetup/install/files/lib/system/email/Email.class.php b/wcfsetup/install/files/lib/system/email/Email.class.php index 14e41e8dbf..b1f11b4f19 100644 --- a/wcfsetup/install/files/lib/system/email/Email.class.php +++ b/wcfsetup/install/files/lib/system/email/Email.class.php @@ -762,36 +762,67 @@ class Email @\header('Content-Encoding: identity'); } - $dumpBody = static function ($body) use (&$dumpBody) { + $dumpPartHeaders = static function (AbstractMimePart $part) { + $result = "
";
+            $result .= \sprintf(
+                "content-type: %s\r\n",
+                $part->getContentType()
+            );
+            if ($part->getContentTransferEncoding()) {
+                $result .= \sprintf(
+                    "content-transfer-encoding: %s\r\n",
+                    $part->getContentTransferEncoding()
+                );
+            }
+            foreach ($part->getAdditionalHeaders() as $header) {
+                $result .= \sprintf(
+                    "%s: %s\r\n",
+                    $header[0],
+                    $header[1]
+                );
+            }
+            $result .= '
'; + + return $result; + }; + + $dumpBody = static function ($body) use (&$dumpBody, $dumpPartHeaders) { $result = ''; // @codingStandardsIgnoreStart if ($body instanceof mime\MimePartFacade) { return $dumpBody($body->getMimePart()); } + $result .= \sprintf( + "
%s", + \get_class($body) + ); + $result .= $dumpPartHeaders($body); if ($body instanceof mime\AbstractMultipartMimePart) { - $result .= "
" . \get_class($body) . ""; foreach ($body->getMimeparts() as $part) { $result .= $dumpBody($part); } - $result .= '
'; } elseif ($body instanceof mime\TextMimePart) { - $result .= "
" . \get_class($body) . ""; + $result .= '
'; if (\str_starts_with($body->getContentType(), 'text/html')) { - $result .= ''; + $result .= \sprintf( + '', + \base64_encode($body->getContent()) + ); } else { - $result .= "
" . StringUtil::encodeHTML($body->getContent()) . "
"; + $result .= \sprintf( + "
%s
", + StringUtil::encodeHTML($body->getContent()) + ); } - $result .= '
'; } elseif ($body instanceof mime\AttachmentMimePart) { - $result .= "
" . \get_class($body) . ""; - $result .= "
" . \implode('', \array_map(static function ($item) { - return "
" . $item[0] . "
" . $item[1] . "
"; - }, $body->getAdditionalHeaders())) . "
"; - $result .= "[" . \strlen($body->getContent()) . " Bytes]"; - $result .= '
'; + $result .= \sprintf( + "
[%d Bytes]", + \strlen($body->getContent()) + ); } else { throw new \LogicException('Bug'); } + $result .= '
'; // @codingStandardsIgnoreEnd return $result; -- 2.20.1