メールを送信すると、英語以外の文字が表示されません。以下のように表示されます。
余生ä»ä»
実際にこれを引き起こす原因を知っているかもしれませんか?スクリプトにContent-typeとcharsetを追加しようとしても、同じように表示されます。
使った Mail::Factory("mail");
メールを送信すると、英語以外の文字が表示されません。以下のように表示されます。
余生ä»ä»
実際にこれを引き起こす原因を知っているかもしれませんか?スクリプトにContent-typeとcharsetを追加しようとしても、同じように表示されます。
使った Mail::Factory("mail");
$mail = Mail::factory("mail");
$to = "me@abc.com";
$body = "好信";
$headers = array("Content-type =>"text/plain: charset=\"UTF-8","From" => "abc@abc.com","To" => "me@abc.com","Subject" => "Test Send Chinese mail-好信");
$mail->send($to, $headers, $body);
これは正しいですか?それは私が期待するものを示していません。本文、ヘッダー、さらには件名に中国語の単語を表示する必要があります。
回答:
メッセージ本文にヘッダー「Content-Type:text / html; charset = UTF-8」を追加できます。
$headers = "Content-Type: text/html; charset=UTF-8";
ネイティブmail()
関数を使用する場合、$ headers配列が4番目のパラメーターになります
mail($to, $subject, $message, $headers)
PEAR Mail :: factory()を使用する場合、コードは次のようになります。
$smtp = Mail::factory('smtp', $params);
$mail = $smtp->send($to, $headers, $body);
mail()
は文字列であり、配列ではありません!!
charset=UTF-8
引用符なしで書くようにしてUTF-8
ください!
text/html
HTML形式でメールを送信する場合にのみ使用してください。プレーンテキストの電子メールの場合は、が必要ですtext/plain
。
すべてのメールシステム(例:http://10minutemail.com)がUTF-8メールを読み取れるわけではないため、かなり指定された文字セット(ISO-8859-2)を使用しています。これが必要な場合:
function utf8_to_latin2($str)
{
return iconv ( 'utf-8', 'ISO-8859-2' , $str );
}
function my_mail($to,$s,$text,$form, $reply)
{
mail($to,utf8_to_latin2($s),utf8_to_latin2($text),
"From: $form\r\n".
"Reply-To: $reply\r\n".
"X-Mailer: PHP/" . phpversion());
}
Appleデバイスが以前のバージョンをうまく読み取れなかったため、別のメーラー関数を作成しました。
function utf8mail($to,$s,$body,$from_name="x",$from_a = "info@x.com", $reply="info@x.com")
{
$s= "=?utf-8?b?".base64_encode($s)."?=";
$headers = "MIME-Version: 1.0\r\n";
$headers.= "From: =?utf-8?b?".base64_encode($from_name)."?= <".$from_a.">\r\n";
$headers.= "Content-Type: text/plain;charset=utf-8\r\n";
$headers.= "Reply-To: $reply\r\n";
$headers.= "X-Mailer: PHP/" . phpversion();
mail($to, $s, $body, $headers);
}
$headers.= "From: =?utf-8?b?".base64_encode($from_name)."?= <".$from_a.">\r\n";
この行は私の問題を解決しました、ありがとう!
'=?utf-8?Q?' . quoted_printable_encode($string) . '?='
そうでない場合はHTML
、UTF-8
お勧めしません。koi8-r
そしてwindows-1251
問題なくのみ。したがって、htmlメールを使用してください。
$headers['Content-Type']='text/html; charset=UTF-8';
$body='<html><head><meta charset="UTF-8"><title>ESP Notufy - ESP Сообщения</title></head><body>'.$text.'</body></html>';
$mail_object=& Mail::factory('smtp',
array ('host' => $host,
'auth' => true,
'username' => $username,
'password' => $password));
$mail_object->send($recipents, $headers, $body);
}
mail()
またはZend_Mail
またはPHPMailer
?Factoryメソッドのコードが必要です!