2012-03-01 11 views
11

Wiem, że jest kilka podobnych pytań do tego, ale po prostu nie mogę go uruchomić.Wysyłanie e-maili z PHP BCC

Ok, mam listę wiadomości e-mail pobranych z mojej bazy danych w zmiennej o nazwie $ emailList. Mogę dostać mój kod, aby wysłać wiadomość e-mail z formularza, jeśli umieściłem zmienną w sekcji $to, ale Nie mogę jej uruchomić z Bcc. Dodałem nawet e-maila do $to, ale to nie ma znaczenia.

Oto mój kod.

$to = "[email protected]"; 
$subject .= "".$emailSubject.""; 
$headers .= 'Bcc: $emailList'; 
$headers = "From: [email protected]\r\n" . "X-Mailer: php"; 
$headers .= "MIME-Version: 1.0\r\n"; 
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 
$message = '<html><body>'; 
$message .= 'THE MESSAGE FROM THE FORM'; 

if (mail($to, $subject, $message, $headers)) { 
    $sent = "Your email was sent!"; 
} else { 
    $sent = ("Error sending email."); 
} 

Próbowałem oba kody:

$headers .= 'Bcc: $emailList'; 

i

$headers .= 'Bcc: '.$emailList.'; 

To nie, że e-maile nie są rozdzielone, ponieważ są. Wiem, że tak, ponieważ działa, jeśli wstawię $emailList w sekcji $to.


powinienem dodać, zignoruj ​​$message bity i rzeczy HTML. Nie dostarczyłem tego wszystkiego, dlatego właśnie tego brakuje w tym kodzie.

+10

Brakuje "\ r \ n" po nagłówku BCC, a następnie nadpisujesz nagłówki w następnym wierszu za pomocą Od. – drew010

+0

Próbowałem również z \ r \ n. Więc gdzie umieścić Bcc? Czy musi być w określonym miejscu? –

+0

@ drew010, twój komentarz powinien zostać opublikowany jako odpowiedź. – davidethell

Odpowiedz

37

Masz $headers .= '...'; następnie $headers = '...';; druga linia zastępuje pierwszą.

Po prostu wpisz $headers .= "Bcc: $emailList\r\n"; powiedzieć po linii Content-type i powinno być dobrze.

Na marginesie, generalnie wymagane jest To; serwery pocztowe mogą oznaczyć Twoją wiadomość jako spam w inny sposób.

$headers = "From: [email protected]\r\n" . 
    "X-Mailer: php\r\n"; 
$headers .= "MIME-Version: 1.0\r\n"; 
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 
$headers .= "Bcc: $emailList\r\n"; 
+0

Nigdy nie miałem problemu, gdy nie określa się "To" w nagłówkach. – Bot

+4

Nie wątpię w to. Chodzi mi o to, że istnieje wiele serwerów pocztowych i filtrów antyspamowych, a e-maile z brakującymi/dziwnymi bitami nagłówka generalnie uzyskują wyższe wyniki spamu. – gregheo

10

Byłaś ustawienie BCC ale potem nadpisanie zmienną FROM

$to = "[email protected]"; 
    $subject .= "".$emailSubject.""; 
$headers .= "Bcc: ".$emailList."\r\n"; 
$headers .= "From: [email protected]\r\n" . 
    "X-Mailer: php"; 
    $headers .= "MIME-Version: 1.0\r\n"; 
    $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; 
$message = '<html><body>'; 
$message .= 'THE MESSAGE FROM THE FORM'; 

    if (mail($to, $subject, $message, $headers)) { 
    $sent = "Your email was sent!"; 
    } else { 
     $sent = ("Error sending email."); 
    } 
+2

'' \ r \ n' powinno być w podwójnych cudzysłowach, w przeciwnym razie jest brane dosłownie. Tylko ten na 'BCC' miał ten problem. – drew010

+0

Zaktualizowano. Dzięki ciągnął – Bot

Powiązane problemy