2013-01-10 73 views
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; 
} 

我聽說那些必須編碼的字符不能用引號引起來。

這個東西適用於這樣的消息「這是新的工作主題」,但得到崩潰這不是「рабочийинструмент」。

+1

不建立你自己的啞劇電子郵件。只需使用PHPMailer或Swiftmailer,讓他們自己照顧它。你會發現你的電子郵件被縮減爲4或5行代碼(基本的),v.s.想要自己做所有事情的gazillions。 –

+0

這已經是PHPMailer。 – timofeiMih

回答