Add a Message-ID header if none is set in Util\Emailer

- Address anti-spam detection rule
This commit is contained in:
Hypolite Petovan 2023-08-14 17:17:25 -04:00
parent 07cdc1fc97
commit 735835193d

View File

@ -126,7 +126,7 @@ class Emailer
* @return bool * @return bool
* @throws InternalServerErrorException * @throws InternalServerErrorException
*/ */
public function send(IEmail $email) public function send(IEmail $email): bool
{ {
Hook::callAll('emailer_send_prepare', $email); Hook::callAll('emailer_send_prepare', $email);
@ -151,7 +151,7 @@ class Emailer
} }
$fromName = Email::encodeHeader(html_entity_decode($email->getFromName(), ENT_QUOTES, 'UTF-8'), 'UTF-8'); $fromName = Email::encodeHeader(html_entity_decode($email->getFromName(), ENT_QUOTES, 'UTF-8'), 'UTF-8');
$fromAddress = $email->getFromAddress(); $fromAddress = $email->getFromAddress();
$replyTo = $email->getReplyTo(); $replyTo = $email->getReplyTo();
$messageSubject = Email::encodeHeader(html_entity_decode($email->getSubject(), ENT_QUOTES, 'UTF-8'), 'UTF-8'); $messageSubject = Email::encodeHeader(html_entity_decode($email->getSubject(), ENT_QUOTES, 'UTF-8'), 'UTF-8');
@ -161,12 +161,17 @@ class Emailer
. rand(100000000, 999999999) . '=:' . rand(100000000, 999999999) . '=:'
. rand(10000, 99999); . rand(10000, 99999);
$messageHeader = $email->getAdditionalMailHeaderString();
if ($countMessageId === 0) {
$messageHeader .= 'Message-ID: <Friendica-Util-Emailer-' . Strings::getRandomHex() . '@' . $this->baseUrl->getHost() . '>' . "\r\n";
}
// generate a multipart/alternative message header // generate a multipart/alternative message header
$messageHeader = $email->getAdditionalMailHeaderString() . $messageHeader .=
"From: $fromName <{$fromAddress}>\r\n" . "From: $fromName <{$fromAddress}>\r\n" .
"Reply-To: $fromName <{$replyTo}>\r\n" . "Reply-To: $fromName <{$replyTo}>\r\n" .
"MIME-Version: 1.0\r\n" . "MIME-Version: 1.0\r\n" .
"Content-Type: multipart/alternative; boundary=\"{$mimeBoundary}\""; "Content-Type: multipart/alternative; boundary=\"{$mimeBoundary}\"";
// assemble the final multipart message body with the text and html types included // assemble the final multipart message body with the text and html types included
$textBody = chunk_split(base64_encode($email->getMessage(true))); $textBody = chunk_split(base64_encode($email->getMessage(true)));