2008-10-02 11 views
10

Estoy tratando de enviar un correo electrónico desde un sitio que estoy construyendo, pero termina en la carpeta de spam de yahoo. Es el correo electrónico que envía las credenciales. ¿Qué puedo hacer para legitimarlo?¿Qué necesito para un encabezado de correo electrónico compatible

$header = "From: site <[email protected]>\r\n"; 
$header .= "To: $name <$email>\r\n"; 
$header .= "Subject: $subject\r\n"; 
$header .= "Reply-To: site <[email protected]>" . "\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); 

Respuesta

2

Además de las sugerencias de Ted Percival, puede intentar usar PHPMailer para crear los correos electrónicos para usted en lugar de compilar manualmente los encabezados. He usado esta clase extensamente y no he tenido ningún problema con el correo electrónico que Yahoo o cualquier otra persona ha rechazado como correo no deseado.

10
  • No utilizar HTML en su correo electrónico.
  • Envíelo a través de un servidor de correo legítimo con una IP estática y DNS inversa (PTR) que apunte al nombre de host real de la máquina (y coincida con una búsqueda directa).
  • Incluya un ID de mensaje (o asegúrese de que el remitente local le agregue uno).
  • Ejecute su correo electrónico a través de SpamAssassin y compruebe qué reglas de puntuación incorrecta coinciden. Evita hacer coincidirlos.
  • Use DomainKeys Identified Mail para firmar digitalmente sus mensajes.
1

Además de Ted Percival's suggestions, asegúrese de que la dirección IP del correo electrónico proviene de una fuente legítima para el correo electrónico de acuerdo con la SPF record de site.com. Si site.com no tiene un registro SPF, agregar uno (que permite la dirección IP en cuestión, por supuesto) puede ayudar a que los correos electrónicos pasen los filtros de spam.

Y si es absolutamente necesario utilizar HTML en su correo electrónico, asegúrese de incluir también una versión de texto sin formato; usaría el tipo de contenido "multipart/alternative" en lugar de "text/html".

4

Acabo de probar con éxito lo siguiente de mi Yahoo! Web cuenta de alojamiento:

 
$email = "[email protected]"; 
$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); 

Sin embargo, usted tiene cierta duplicación en su cabecera que sólo tendrá que hacer lo siguiente:

 
$email = "[email protected]"; 
$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); 
1

sugerencias de Ted son buenos, al igual que Tim, pero la única manera que Alguna vez he podido enviar correos electrónicos a Yahoo/Hotmail/etc. de manera confiable, es utilizar las clases de correo electrónico de PEAR. Pruebe esos & (suponiendo que su servidor esté bien) Puedo garantizar que funcionará.

0

Compruebe rfc 822 y rfc 2045 para formato de correo electrónico. Encuentro que la clase de correo electrónico de Python es realmente fácil de usar. Supongo que la PEAR de php hace lo mismo (según correos anteriores). Además, el encabezado y el cuerpo están separados por un "\ r \ n \ r \ n", no estoy seguro de si tu código lo inserta automáticamente, pero puedes intentar agregarlo al encabezado.

No creo que DK/SPF sea necesario (ya que hay muchos servidores web sin soporte DK/SPF). Puede haber muchos factores que podrían estar bloqueando (al menos 10K diferentes criterios y métodos ... p0f, listas grises, listas grises, listas negras, etc.). Asegúrese de que su correo electrónico esté formateado correctamente (esto marca una GRAN diferencia). Busque en las bibliotecas que generan el encabezado completo para usted ... de esa manera tiene menos posibilidades de cometer un error.

1

Ted y Tim tienen excelentes sugerencias. Como lo hace Shabbyrobe. Usamos PHPMailer y no tenemos ningún problema con los filtros de spam.

Una cosa a tener en cuenta es que muchos filtros de spam contarán no tener una versión de texto en su contra si usted está usando un formato MIME. Puede agregar todos los encabezados y la versión de texto, o simplemente dejar que PHPMailer o la biblioteca de correo PEAR se encarguen de eso por usted. Tener una versión de texto puede ayudar o no, pero es una buena práctica y fácil de usar.

que se dan cuenta de que su ejemplo de código es sólo eso - una muestra, pero vale la pena decir: No vuelvas a gota justa datos de usuario proporcionado en sus cabeceras de los mensajes. Asegúrese de validar que se trata de los datos que espera. Es trivial convertir un script de php en un relay abierto, y nadie lo quiere.

0

Agregar un registro SPF es muy fácil. Deberías intentarlo.

Esta es para dreamhost más googlemail También debe anuncio que SERVIDORWEB dirección IP (en mi caso, la línea antes de googlemail) La última línea indica al servidor que hacer rechazar una suave (marca como spam, pero no lo hacen eliminar) lo estoy usando en lugar de "-" (eliminar) la documentación ya que Google lo dice :-)

es un 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.010 ip4: 208.97.132.74 ip4: 67.205.36.71 incluyen: aspmx.googlemail.com mx ~ todo

Espero que ayuda

2

También existe la posibilidad de que 'sendmail' (que se encuentra debajo de la función PHP mail()) necesita parámetros adicionales. Si tiene un problema con los encabezados de devolución (como Return-Path) que no se configuran con lo que usted configuró, es posible que necesite usar el fifth mail() parámetro. Ejemplo:

mail('[email protected]', 'Subject', $mail_body, $headers, " -f [email protected]"); 

¡Hay alguna evidencia adicional de que el verdadero envío de correo vainilla puede tener un problema con esto! Esperemos que tenga 'postfix' como soporte de mail() subyacente de PHP en su servidor de destino.

Cuestiones relacionadas