PHP E-Posta Kodlama?

6 Cevap php

Bir e-posta gönderirken, yabancı karakterler ile bazı sorun yaşıyorum. Birisi ne bana tavsiyelerde olabilir. Ben sorunun üç şeyden biri olabilir düşünüyorum.

1) The html page encoding is incorrect. (Would this affect the POST data from the form?) 2) The mail function doesn't have any encoding. Thus the program doesn't know how to read it. (Most likely) 3) The file itself doesn't have the right encoding and thus is making problems. (Probably quite unlikely)

Herhangi bir diğer olası nedenleri var mı?

Ben sorunu bulana kadar 1 ile 1 tanesi bu nakavt çalışıyorum. Ben bu seçeneği 2 en olası nedeni olduğunu düşünüyorum. Nasıl uygun eklerim - evrensel kodlama bir posta fonksiyonuna?

Bu benim şu anda ne var.

$mail_sent = mail($client_email, $title, $message, "From: {$visitor_email}");

Şu anda formu lehçe veya İsveç karakter göndermek değil farkındayım.

Birisi herhangi bir diğer olası nedenleri işaret ve e-postalar göndermek için kullanmanız gereken ne kodlama söyle eğer ben çok minnettar olacaktır.

Çok teşekkürler.

6 Cevap

Bildiğim kadarıyla PHP onun dizeleri için Varsayılan kodlama olarak UTF-8 desteklemiyor. Eğer tercih kodlama için uygun kodlama / taşıma işlevleri kullanmak gerekir.

E-posta istemcileri doğru karakterleri görüntülemek (veya seçtiğiniz kodlama ile değiştirin) böylece e-posta başlıklarını için: Ayrıca 'charset = utf-8 metin / html Content-Type' ekleyin.

Sen içerik türünü ve kodlamasını belirtmek vermedi. Bu deneyin:

$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));

Ben aşağıdaki kodu kullanabilirsiniz:

  $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 mail sarıcı kullanın, (burda deneyim konuşuyor) aklı kazandıracak. Örneğin, PHPMailer Giden e-posta kodlamasını belirlemek için izin verir ve sizin için bir ileti oluşturur.

Ayrıca, UTF-8 kullanmak; neredeyse evrensel günümüzde desteklenen ve hiç ihtiyacınız olan tüm karakterleri kapsar oluyor.

Daha önce söylenenleri ne ek olarak, UTF-8 kullanmak edebilmek için HTML posta göndermek için zorunlu değildir, aynı zamanda başlıklarını o kadar basit bir metin biçimlendirmek olabilir:

'Content-Type: text/plain;charset=utf-8'

Bu kodu kullanın

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));
}

dan: http://php.net/manual/en/function.mail.php