PHPMailer\PHPMailer

PHPMailer::createHeader()publicWP 1.0

Assemble message headers.

Method of the class: PHPMailer{}

No Hooks.

Return

String. The assembled headers

Usage

$PHPMailer = new PHPMailer();
$PHPMailer->createHeader();

PHPMailer::createHeader() code WP 6.5.2

public function createHeader()
{
    $result = '';

    $result .= $this->headerLine('Date', '' === $this->MessageDate ? self::rfcDate() : $this->MessageDate);

    //The To header is created automatically by mail(), so needs to be omitted here
    if ('mail' !== $this->Mailer) {
        if ($this->SingleTo) {
            foreach ($this->to as $toaddr) {
                $this->SingleToArray[] = $this->addrFormat($toaddr);
            }
        } elseif (count($this->to) > 0) {
            $result .= $this->addrAppend('To', $this->to);
        } elseif (count($this->cc) === 0) {
            $result .= $this->headerLine('To', 'undisclosed-recipients:;');
        }
    }
    $result .= $this->addrAppend('From', [[trim($this->From), $this->FromName]]);

    //sendmail and mail() extract Cc from the header before sending
    if (count($this->cc) > 0) {
        $result .= $this->addrAppend('Cc', $this->cc);
    }

    //sendmail and mail() extract Bcc from the header before sending
    if (
        (
            'sendmail' === $this->Mailer || 'qmail' === $this->Mailer || 'mail' === $this->Mailer
        )
        && count($this->bcc) > 0
    ) {
        $result .= $this->addrAppend('Bcc', $this->bcc);
    }

    if (count($this->ReplyTo) > 0) {
        $result .= $this->addrAppend('Reply-To', $this->ReplyTo);
    }

    //mail() sets the subject itself
    if ('mail' !== $this->Mailer) {
        $result .= $this->headerLine('Subject', $this->encodeHeader($this->secureHeader($this->Subject)));
    }

    //Only allow a custom message ID if it conforms to RFC 5322 section 3.6.4
    //https://tools.ietf.org/html/rfc5322#section-3.6.4
    if (
        '' !== $this->MessageID &&
        preg_match(
            '/^<((([a-z\d!#$%&\'*+\/=?^_`{|}~-]+(\.[a-z\d!#$%&\'*+\/=?^_`{|}~-]+)*)' .
            '|("(([\x01-\x08\x0B\x0C\x0E-\x1F\x7F]|[\x21\x23-\x5B\x5D-\x7E])' .
            '|(\\[\x01-\x09\x0B\x0C\x0E-\x7F]))*"))@(([a-z\d!#$%&\'*+\/=?^_`{|}~-]+' .
            '(\.[a-z\d!#$%&\'*+\/=?^_`{|}~-]+)*)|(\[(([\x01-\x08\x0B\x0C\x0E-\x1F\x7F]' .
            '|[\x21-\x5A\x5E-\x7E])|(\\[\x01-\x09\x0B\x0C\x0E-\x7F]))*\])))>$/Di',
            $this->MessageID
        )
    ) {
        $this->lastMessageID = $this->MessageID;
    } else {
        $this->lastMessageID = sprintf('<%s@%s>', $this->uniqueid, $this->serverHostname());
    }
    $result .= $this->headerLine('Message-ID', $this->lastMessageID);
    if (null !== $this->Priority) {
        $result .= $this->headerLine('X-Priority', $this->Priority);
    }
    if ('' === $this->XMailer) {
        //Empty string for default X-Mailer header
        $result .= $this->headerLine(
            'X-Mailer',
            'PHPMailer ' . self::VERSION . ' (https://github.com/PHPMailer/PHPMailer)'
        );
    } elseif (is_string($this->XMailer) && trim($this->XMailer) !== '') {
        //Some string
        $result .= $this->headerLine('X-Mailer', trim($this->XMailer));
    } //Other values result in no X-Mailer header

    if ('' !== $this->ConfirmReadingTo) {
        $result .= $this->headerLine('Disposition-Notification-To', '<' . $this->ConfirmReadingTo . '>');
    }

    //Add custom headers
    foreach ($this->CustomHeader as $header) {
        $result .= $this->headerLine(
            trim($header[0]),
            $this->encodeHeader(trim($header[1]))
        );
    }
    if (!$this->sign_key_file) {
        $result .= $this->headerLine('MIME-Version', '1.0');
        $result .= $this->getMailMIME();
    }

    return $result;
}