電子メールを送信するときに、外国人のキャラクターに問題があります。誰かが私に何をすべきかアドバイスしてもらえますか?問題は次の3つのいずれかである可能性があります。
他に考えられる原因はありますか?
問題が見つかるまで、これらを1つずつノックアウトしようとしています。オプション2が最も可能性の高い原因だと思います。メール機能に適切なユニバーサルエンコーディングを追加するにはどうすればよいですか?
これは私が今持っているものです。
$mail_sent = mail($client_email, $title, $message, "From: {$visitor_email}");
私は現在、フォームがポーランド語やスウェーデン語の文字を送信しないことを認識しています。
誰かが他の考えられる原因を指摘し、電子メールの送信に使用する必要のあるエンコードを教えてくれたら、とても感謝しています。
どうもありがとう。
私の知る限り、PHPはその文字列のデフォルトエンコーディングとしてUTF-8をサポートしていません。お好みのエンコーディングに関連するエンコーディング/処理関数を使用する必要があります。
また、Content-Type:text/html;charset=utf-8
を電子メールヘッダーに追加して、電子メールクライアントが文字を正しく表示するようにします(または選択したエンコードに置き換えます)。
コンテンツのタイプとエンコードを指定していません。これを試して:
$headerFields = array(
"From: {$visitor_email}",
"MIME-Version: 1.0",
"Content-Type: text/html;charset=utf-8"
);
$mail_sent = mail($client_email, $title, $message, implode("\r\n", $headerFields));
このコードを使用
function mail_send($arr)
{
if (!isset($arr['to_email'], $arr['from_email'], $arr['subject'], $arr['message'])) {
throw new HelperException('mail(); not all parameters provided.');
}
$to = empty($arr['to_name']) ? $arr['to_email'] : '"' . mb_encode_mimeheader($arr['to_name']) . '" <' . $arr['to_email'] . '>';
$from = empty($arr['from_name']) ? $arr['from_email'] : '"' . mb_encode_mimeheader($arr['from_name']) . '" <' . $arr['from_email'] . '>';
$headers = array
(
'MIME-Version: 1.0',
'Content-Type: text/html; charset="UTF-8";',
'Content-Transfer-Encoding: 7bit',
'Date: ' . date('r', $_SERVER['REQUEST_TIME']),
'Message-ID: <' . $_SERVER['REQUEST_TIME'] . md5($_SERVER['REQUEST_TIME']) . '@' . $_SERVER['SERVER_NAME'] . '>',
'From: ' . $from,
'Reply-To: ' . $from,
'Return-Path: ' . $from,
'X-Mailer: PHP v' . phpversion(),
'X-Originating-IP: ' . $_SERVER['SERVER_ADDR'],
);
mail($to, '=?UTF-8?B?' . base64_encode($arr['subject']) . '?=', $arr['message'], implode("\n", $headers));
}
前述の内容に加えて、UTF-8を使用できるようにHTMLでメールを送信することは必須ではありません。また、ヘッダーで単純なテキストとしてフォーマットすることもできます。
'Content-Type: text/plain;charset=utf-8'
次のコードを使用します。
$text = "";
$text .= "<html>\n";
$text .= "<body style=\"font-family:Arial; \">\n";
$text .= "<b>Add Your text here . . .</b>";
$text .= date("d.m.Y") . " <br><br>\n\n";
$text .= "</body>\n";
$text .= "</html>\n";
$headers = 'From: ' . $myEmail . "\r\n";
$headers .= 'To: ' . $depEmail . "\r\n";
$headers .= 'Return-Path: ' . $myEmail . "\r\n";
$headers .= 'MIME-Version: 1.0' ."\r\n";
$headers .= 'Content-Type: text/HTML; charset=ISO-8859-1' . "\r\n";
$headers .= 'Content-Transfer-Encoding: 8bit'. "\n\r\n";
$headers .= $text . "\r\n";
set_time_limit(30);
if (!mail('', 'Demande information', '', $headers)) {
Alert(...)
PHPメールラッパーを使用すると、正気が保たれます(ここでの経験から言えば)。たとえば、 PHPMailer を使用すると、送信メールのエンコードを設定し、あなたへのメッセージ。
また、UTF-8を使用します。最近ではほぼ全世界でサポートされており、必要なすべてのキャラクターをカバーしています。
このコードを使用して、古いHordeメールのギリシャ語エンコードの問題を解決します。
$headers = 'From: ' . $youremail . "\r\n";
$headers .= 'To: ' . $to . "\r\n";
$headers .= 'Return-Path: ' . $youremail . "\r\n";
$headers .= 'MIME-Version: 1.0' ."\r\n";
$headers .= 'Content-Type: text/HTML; charset=utf-8' . "\r\n";
$headers .= 'Content-Transfer-Encoding: 8bit'. "\n\r\n";
$headers .= $message . "\r\n";
mail('', 'Request from Site yoursite', '', $headers);