1
如何編輯我的功能,擺脫=?UTF-8在郵件主題PHPMailer的
?「=?UTF-8?B'0JfQsNC60LDQtyDQstGL0L/QuNGB0LrQuCBkb2xzbm93ICIgM9C00LDQtNCw?=」。」
在郵件主題
該功能(EncodeHeader)被編碼郵件消息的報頭,需要以某種方式校正的代碼如下:
public function EncodeHeader($str, $position = 'text') {
$x = 0;
switch (strtolower($position)) {
case 'phrase':
if (!preg_match('/[\200-\377]/', $str)) {
// Can't use addslashes as we don't know what value has magic_quotes_sybase
$encoded = addcslashes($str, "\0..\37\177\\\"");
if (($str == $encoded) && !preg_match('/[^A-Za-z0-9!#$%&\'*+\/=?^_`{|}~ -]/', $str)) {
return ($encoded);
} else {
return ("\"$encoded\"");
}
}
$x = preg_match_all('/[^\040\041\043-\133\135-\176]/', $str, $matches);
break;
case 'comment':
$x = preg_match_all('/[()"]/', $str, $matches);
// Fall-through
case 'text':
default:
$x += preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/', $str, $matches);
break;
}
if ($x == 0) {
return ($str);
}
$maxlen = 75 - 7 - strlen($this->CharSet);
// Try to select the encoding which should produce the shortest output
if (strlen($str)/3 < $x) {
$encoding = 'B';
if (function_exists('mb_strlen') && $this->HasMultiBytes($str)) {
// Use a custom function which correctly encodes and wraps long
// multibyte strings without breaking lines within a character
$encoded = $this->Base64EncodeWrapMB($str);
} else {
$encoded = base64_encode($str);
$maxlen -= $maxlen % 4;
$encoded = trim(chunk_split($encoded, $maxlen, "\n"));
}
} else {
$encoding = 'Q';
$encoded = $this->EncodeQ($str, $position);
$encoded = $this->WrapText($encoded, $maxlen, true);
$encoded = str_replace('='.$this->LE, "\n", trim($encoded));
}
$encoded = preg_replace('/^(.*)$/m', " =?".$this->CharSet."?$encoding?\\1?=", $encoded);
$encoded = trim(str_replace("\n", $this->LE, $encoded));
return $encoded;
}
我聽說那些必須編碼的字符不能用引號引起來。
這個東西適用於這樣的消息「這是新的工作主題」,但得到崩潰這不是「рабочийинструмент」。
不建立你自己的啞劇電子郵件。只需使用PHPMailer或Swiftmailer,讓他們自己照顧它。你會發現你的電子郵件被縮減爲4或5行代碼(基本的),v.s.想要自己做所有事情的gazillions。 –
這已經是PHPMailer。 – timofeiMih