PHP ile (adı) bir e-posta adres satırı biçimlendirmek nasıl?

3 Cevap php

Ben e-posta iletileri oluşturmak için çalışıyorum. Alıcının e-posta adresi ve ad kullanıcı tarafından belirtilir. PHP ile bunu yapmak için doğru yolu nedir:

$to_header = "To: $name <$email>" # incorrect!

Zaten e-posta adresleriyle (en ... şimdi gitmeyelim) doğrulamak için iyi bir yöntem kullanmak, ama nasıl düzgün örneğin $ ile adını kodlamak yok. QP gerektiğinde? Alıcı "foo bar" denir Örneğin, ben gibi (örneğin) bir şeyler üretmek gerekir:

To: =?utf-8?Q?Foo_B=C3=A4r?= <foo.bar@example.com>

Update: Daha önce ben (biz zaten harici bir kuyruk sistemi vardı) diğer nedenlerle böyle PHPMailer gibi bir hazır mailler kullanarak değildi. Her neyse, şimdi ben kullanarak bitiriyorum SwiftMailer. Tüm cevaplar için teşekkürler!

3 Cevap

I iconv_mime_encode Konu başlığını kodlamak için kullanılan ettik. Ben aynı yanı sıra To-başlığında adını kodlamak için kullanılan olabilir sanırım.

Ben, ancak, diğerleri gibi, sizin için kodlama işlemek için varolan bir kitaplık veya paketini kullanmanızı öneririz.

Ben PEAR dan Mail mime kullanılabilir kullandım. Belki orada iyi, ama diğerleri için bir alternatif olarak önerilen değildir.

var_dump(
    iconv_set_encoding('output_encoding', 'UTF-8'),
    iconv_set_encoding('internal_encoding', 'UTF-8'),
    iconv_set_encoding('input_encoding', 'UTF-8'),
    iconv_mime_encode('To', 'Bäråör Zückefém') .  " <foo@bar.com>"
);

Burada (overkill biraz ile) bunu nasıl:

function check_referrer($referrers) {
    if (count($referrers)) {
        $found = false;
        $temp = explode("/",getenv("HTTP_referrer"));
        $referrer = $temp[2];
            if ($referrer == "") {
            $referrer = $_SERVER['HTTP_referrer'];
            list($remove, $stuff) = split('//', $referrer, 2);
            list($home, $stuff) = split('/', $stuff, 2);
            $referrer = $home;
        }
            for ($x = 0; $x < count($referrers); $x++) {
            if (eregi ($referrers[$x], $referrer)) {
                $found = true;
            }
        }
        if ($referrer == "") {
            $found = false;
        }
        if (!$found){
            error_log("[Store Checkout] Illegal Referrer. (".getenv("HTTP_referrer").")", 0);
            return "<div id='error'><p>You are coming from an <strong>unauthorized domain.</strong></p>\r\n"."\t<ul>\r\n".$error_list."\t</ul>\r\n"."</div>\r\n";
        }
        return $found;
    } else {
    return "<div id='error'><p>You are coming from an <strong>unauthorized domain.</strong></p>\r\n"."\t<ul>\r\n".$error_list."\t</ul>\r\n"."</div>\r\n";
    }
} /* end function check_referrer */

function mail_it($content, $subject, $sender, $recipient) {
    $referrers = array("example.com");

    $authorizedDomain = check_referrer($referrers);
    if($authorizedDomain === FALSE) {
        return $authorizedDomain;
    }
    $sender = remove_headers($sender);
    $recipient = remove_headers($recipient);

    if($content !== FALSE && $subject !== FALSE && $sender !== FALSE && $recipient !== FALSE) {
        $headers = "from: ".$sender."\r\n"; 
        mail($recipient, $subject, $content, $headers);
    }
    return;
} /* end function mail_it */

$content = "email body content";
$subject = "email subject";
$sender = "Your Name <yname@example.com>";
$recipient = $name . "<" . $email . ">";


mail_it($content, $subject, $sender, $recipient);