Pergunta

Eu estou tentando enviar um e-mail a partir de um site que estou construindo, mas ele acaba na pasta yahoo spam. É o e-mail que envia credenciais. O que posso fazer para legitimá-lo?

$header = "From: site <sales@site.com>\r\n";
$header .= "To: $name <$email>\r\n";
$header .= "Subject: $subject\r\n";
$header .= "Reply-To: site <sales@site.com>" . "\r\n";
$header .= "MIME-VERSION: 1.0\r\n";
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$phpversion = phpversion();
$header .= "X-Mailer: PHP v$phpversion\r\n";
mail($email,$subject,$body,$header);
Foi útil?

Solução

Além de sugestões de Ted Percival, você pode tentar usar PHPMailer para criar os e-mails para você ao invés de construir manualmente os cabeçalhos. Eu usei essa classe extensivamente e não teve nenhum problema com e-mail ser rejeitado como spam pelo Yahoo, ou qualquer outra pessoa.

Outras dicas

  • Não use HTML em seu e-mail.
  • Enviar lo através de um servidor de e-mails legítimos com um IP estático e reverse-DNS (PTR) que aponta para o nome do host reais da máquina (e corresponde a uma pesquisa direta).
  • Inclua um Message-ID (ou assegurar que a mailer local, adiciona um para você).
  • Execute o seu e-mail através SpamAssassin e ver quais as regras de bad-scoring ele corresponde. Evite combinando-os.
  • DomainKeys Identified Mail para assinar digitalmente suas mensagens.

Eu só sucesso tentei o seguinte do meu Yahoo! conta de hospedagem Web:

$email = "me@site.com";
$subject = "Simple test";
$body = "Simple test";
$header = "From: site \r\n";
$header .= "To: $name \r\n";
$header .= "Subject: $subject\r\n";
$header .= "Reply-To: site " . "\r\n";
$header .= "MIME-VERSION: 1.0\r\n";
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$phpversion = phpversion();
$header .= "X-Mailer: PHP v$phpversion\r\n";
mail($email,$subject,$body,$header);

No entanto, você tem alguma duplicação em seu cabeçalho você só precisa fazer o seguinte:

$email = "me@site.com";
$subject = "Simple test";
$body = "Simple test";
$header = "From: site \r\n";
$header .= "MIME-VERSION: 1.0\r\n";
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$phpversion = phpversion();
$header .= "X-Mailer: PHP v$phpversion\r\n";
mail($email,$subject,$body,$header);

Há também a possibilidade de que 'sendmail' (que está por debaixo da função PHP mail ()) precisa de parâmetros extras. Se você tem um problema com os cabeçalhos de retorno (como Return-Path) não ser conjunto com o que você configurá-los para ser, você pode precisar usar o parâmetro quinta mail (). Exemplo:

mail('recipient@domain.com', 'Subject', $mail_body, $headers, " -f sender@domain.com");

Há alguma evidência adicional de que a verdadeira sendmail baunilha pode ter problema com isso! Esperamos que você tenha 'postfix' como correio subjacente do PHP (apoio) em seu servidor de destino.

Além , certifique-se de que o endereço IP do e-mail é proveniente de uma fonte legítima para e-mail de acordo com o registro SPF de site.com. Se site.com não tem um registro SPF, adicionando um (que permite que o endereço IP em questão, é claro) pode ajudar a obter os e-mails filtros de spam do passado.

E se absolutamente precisa usar HTML no seu e-mail, certifique-se que você também incluem uma versão em texto puro bem; você pode usar o tipo de conteúdo "multipart / alternative" em vez de "text / html".

sugestões de Ted são bons, como são Tim, mas a única maneira que eu já sido capaz de obter de forma confiável e-mail através de Yahoo / Hotmail / etc é usar as classes PEAR e-mail. Tente aqueles & (assumindo que o seu servidor está OK) eu posso praticamente garantir que vai funcionar.

Ted e Tim têm excelentes sugestões. Como faz Shabbyrobe. Usamos PHPMailer e não têm quaisquer problemas com filtros de spam.

Uma coisa a notar é que muitos filtros de spam vai contar não ter uma versão de texto contra você, se você estiver usando um formato MIME. Você pode adicionar todos os cabeçalhos e a versão texto você mesmo, ou simplesmente deixar PHPMailer ou o PERA biblioteca correio cuidar disso para você. Ter uma versão em texto pode ou não pode ajudar, mas é uma boa prática e de fácil utilização.

Eu percebo que o seu exemplo de código é apenas isso - uma amostra, mas vale a pena dizer: Nunca simplesmente colocar os dados do usuário fornecido em seus cabeçalhos de correio. Certifique-se de validar que é dados que você espera. É trivial para virar um script php mail para uma retransmissão aberta, e ninguém quer isso.

Verifique RFC 822 e RFC 2045 para o formato de e-mail. Acho classe E-mail do python realmente fácil de trabalhar. Presumo PERA do php faz o mesmo (de acordo com mails anteriores). Além disso, o cabeçalho eo corpo são separados por um "\ r \ n \ r \ n", não tenho certeza se o seu código insere automaticamente isso, mas você pode tentar acrescentar que para o cabeçalho.

Eu não acho que DK / SPF podem ser necessárias (uma vez que existem muitos servidores web lá fora, sem apoio DK / SPF). Não pode haver um monte de fatores que podem estar causando-lo para ficar bloqueado (pelo menos 10K critérios e métodos diferentes .. p0f, Greylisting, greylisting, lista negra etc etc). Certifique-se de que seu e-mail está formatado corretamente (isto faz uma grande diferença). Olhe em bibliotecas que geram o cabeçalho completo para você .. Dessa forma você terá menos chances de fazer qualquer erro.

Como adicionar um registro SPF é muito fácil. Você deve tentar.

Este é para dreamhost mais googlemail Você também deve anúncio que você webserver endereço IP (no meu caso, a linha antes googlemail) A última linha diz ao servidor para fazer um soft rejeitar (marcar como spam, mas não eliminar) Eu estou usando-o em vez de "-" (Apagar) porque a documentação do Google diz assim: -)

É um registro TXT v = spf1 IP4: 64.111.100.0/24 IP4: 66.33.201.0/24 IP4: 66.33.216.0/24 IP4: 208.97.132.0/24 IP4: 208.97.187.0/24 IP4: 208.113.200.0/24 IP4: 208.113.244.0/24 IP4: 208.97.132.74 IP4: 67.205.36.71 incluem: aspmx.googlemail.com mx ~ all

Hope isso ajuda

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top