@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Fix parsing of incoming mail with UTF-8 encoded headers

Summary:
rPa76444a8e238f647dc96f756e6c88aa2fafcdbfe updated our 13 year old copy of the mimemailparser library.
That included a behaviour change in the library not covered by Phorge code: The library now decodes MIME encoded UTF8 data in headers. Phorge passes that header to the `iconv_mime_decode()` PHP function which does not accept already encoded content.

```
EXCEPTION: (RuntimeException) iconv_mime_decode(): Detected an illegal character in input string at [<arcanist>/src/error/PhutilErrorHandler.php:273]
arcanist(head=master, ref.master=29ca3df1122b), phorge(head=master, ref.master=6ec5c88bee24)
#0 PhutilErrorHandler::handleError(integer, string, string, integer)
#1 iconv_mime_decode(string, integer, string) called at [<arcanist>/src/utils/utils.php:1759]
#2 phutil_decode_mime_header(string) called at [<phorge>/scripts/mail/mail_handler.php:64]
```

Closes T15960

Test Plan: * Have an email file called `tmp.mbox` with a UTF-8 encoded `From:` header. In `scripts/mail/mail_handler.php`, replace `file_get_contents('php://stdin')` with `file_get_contents('./tmp.mbox')`. Insert `echo $headers['subject']; echo "\n"; echo $headers['from'];` statements for debugging. Run `php ./mail_handler.php`.

Reviewers: O1 Blessed Committers, taavi, valerio.bozzolan

Reviewed By: O1 Blessed Committers, taavi, valerio.bozzolan

Subscribers: taavi, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno

Maniphest Tasks: T15960

Differential Revision: https://we.phorge.it/D25839

-4
-4
scripts/mail/mail_handler.php
··· 57 57 } 58 58 59 59 $headers = $parser->getHeaders(); 60 - if (array_key_exists('subject', $headers)) { 61 - $headers['subject'] = phutil_decode_mime_header($headers['subject']); 62 - } 63 - $headers['from'] = phutil_decode_mime_header($headers['from']); 64 60 65 61 if ($args->getArg('process-duplicates')) { 66 62 $headers['message-id'] = Filesystem::readRandomCharacters(64);