Make incoming mail handling more robust / correct

Summary:
* Properly handle when no mail headers at all can be parsed
* Properly handle when mail headers can be parsed but no subject line can be found

```
EXCEPTION: (RuntimeException) Undefined index: subject
```

Closes T15769

Test Plan: See T15769

Reviewers: O1 Blessed Committers, valerio.bozzolan

Reviewed By: O1 Blessed Committers, valerio.bozzolan

Subscribers: 20after4, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno

Maniphest Tasks: T15769

Differential Revision: https://we.phorge.it/D25565
这个提交包含在:
Andre Klapper 2024-04-01 12:32:50 +02:00
父节点 c0bc453405
当前提交 644f179dd2
共有 2 个文件被更改,包括 5 次插入3 次删除

查看文件

@ -308,10 +308,10 @@ class MimeMailParser {
* @param $part Array
*/
private function getPartHeaders($part) {
if (isset($part['headers'])) {
if (isset($part['headers']) && $part['headers']) {
return $part['headers'];
}
return false;
throw new Exception('MimeMailParser::getHeaders() could not parse any email headers.');
}
/**

查看文件

@ -55,7 +55,9 @@ foreach (array('text', 'html') as $part) {
}
$headers = $parser->getHeaders();
$headers['subject'] = phutil_decode_mime_header($headers['subject']);
if (array_key_exists('subject', $headers)) {
$headers['subject'] = phutil_decode_mime_header($headers['subject']);
}
$headers['from'] = phutil_decode_mime_header($headers['from']);
if ($args->getArg('process-duplicates')) {