Charset is not added to Header "Content-Type"
Correction to my previous report: the function name GetContentTypeBody() was correct, but unfortunately I pasted the wrong code line (from GetContentTypeHdr()). The actual problematic line in GetContentTypeBody() is: $data . "\t" . $charset . self::CRLF; Since the result of this expression is neither assigned nor returned, the charset parameter is discarded. It should be: $data .= "\t" . $charset . self::CRLF; Sorry for the confusion caused by quoting the wrong line in my original report.
Correction: I referenced GetContentTypeHdr() by mistake. The issue is actually in GetContentTypeBody(), in the line immediately after the initial assignment to $data. The expression $data . "\t" . $charset . self::CRLF; has no effect because its result is discarded. It should be $data .= ....
Non-ASCII display names in mail headers are not MIME encoded
Email validation incorrectly requires recipient domain to respond on port 80
function MbEncode() returns UTF-8 strings unencoded
Missing .= in GetContentTypeBody()
Base64 HTML body not MIME wrapped in GetMsgPart()