Mail () no php não envia quando o caractere \ n no cabeçalho

1

Eu tenho alguns scripts como este para enviar e-mails:

$content = "<html><head><title>xxxxx</title></head><body>blabla</body></html>";
        $headers ='From: "'.$email_auteur.'"<'.$email_auteur.'>'."\n";
        $headers .='Reply-To: '.$email_auteur.''."\n";
        $headers .='Content-Type: text/html; charset="iso-8859-1"'."\n";
        $headers .='Content-Transfer-Encoding: 8bit';
        mail("[email protected]", "Subject", $content, $headers);

Todos os scripts como este funcionaram bem. Mas eu mudo o servidor (mesmo sistema operacional (Debian)) e agora esses scripts não funcionam mais. Eu notei que se eu remover o \ n no final desta linha:

$headers .='Reply-To: '.$email_auteur.''."\n";

Funciona! ... Mas eu tenho toneladas desse script rodando no servidor, então é muito fastidioso corrigir todos eles. Onde posso encontrar algum conf para aceitar este personagem, por favor?

    
por Recif 18.02.2014 / 13:13

1 resposta

1

Como pode ser visto na documentação do php link , você deve separar os cabeçalhos com \ r \ n em vez de \ n (a menos que seja usado um agente de transferência de mensagens com bugs que duplique o código).

De acordo com o link , você está sendo marcado como spam porque não tem espaço entre " e < no cabeçalho From .

Você deve adicionar um espaço no cabeçalho De, isso deve ser suficiente para se livrar da pontuação de spam.

De:

$headers ='From: "'.$email_auteur.'"<'.$email_auteur.'>'."\n";

Para:

$headers ='From: "'.$email_auteur.'" <'.$email_auteur.'>'."\n";

Na verdade, você não deve usar o endereço de e-mail como nome de exibição, portanto, se você não tiver nada relevante para usar como nome de exibição, use:

$headers ='From: '.$email_auteur."\n";

    
por 18.02.2014 / 14:41

Tags