¿Qué necesito para un encabezado de correo electrónico compatible?

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

$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); 

Además de las sugerencias de Ted Percival, puede intentar usar PHPMailer para crear los correos electrónicos por usted en lugar de construir 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.

  • No use HTML en su correo electrónico.
  • Envíelo a través de un servidor de correo legítimo con IP estática y DNS inverso (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 vea qué reglas de puntuación incorrecta coinciden. Evita hacer coincidirlos.
  • Utilice DomainKeys Identified Mail para firmar digitalmente sus mensajes.

Acabo de probar con éxito lo siguiente de mi Yahoo! Cuenta de alojamiento web:

 $ email = "[email protected]";
 $ subject = "Prueba simple";
 $ body = "Prueba simple";
 $ header = "From: site \ r \ n";
 $ header. = "A: $ nombre \ r \ n";
 $ header. = "Asunto: $ subject \ r \ n";
 $ header. = "Responder a: sitio".  "\ r \ n";
 $ header. = "MIME-VERSION: 1.0 \ r \ n";
 $ header. = 'Tipo de contenido: text / html;  charset = iso-8859-1 '.  "\ r \ n";
 $ phpversion = phpversion ();
 $ header. = "X-Mailer: PHP v $ phpversion \ r \ n";
 correo ($ correo electrónico, $ asunto, $ cuerpo, $ encabezado);

Sin embargo, tiene alguna duplicación en su encabezado, solo debería hacer lo siguiente:

 $ email = "[email protected]";
 $ subject = "Prueba simple";
 $ body = "Prueba simple";
 $ header = "From: site \ r \ n";
 $ header. = "MIME-VERSION: 1.0 \ r \ n";
 $ header. = 'Tipo de contenido: text / html;  charset = iso-8859-1 '.  "\ r \ n";
 $ phpversion = phpversion ();
 $ header. = "X-Mailer: PHP v $ phpversion \ r \ n";
 correo ($ correo electrónico, $ asunto, $ cuerpo, $ encabezado);

También existe la posibilidad de que ‘sendmail’ (que está debajo de la función PHP mail ()) necesite 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 quinto parámetro de mail (). Ejemplo:

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

¡Hay alguna evidencia más de que el verdadero envío de correos vainilla puede tener un problema con esto! Esperemos que tenga ‘postfix’ como soporte de mail () subyacente de PHP en su servidor de destino.

Además de las sugerencias de Ted Percival , asegúrese de que la dirección IP desde donde proviene el correo electrónico sea una fuente legítima de correo electrónico según el registro de SPF 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”.

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

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 que NO tendrán una versión de texto en su contra si 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.

Me doy cuenta de que la muestra de su código es solo eso, una muestra, pero vale la pena decir: no acabe de soltar datos provistos por el usuario en sus encabezados de correo. 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.

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 si el código lo inserta automáticamente, pero puede 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.

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

Este es para Dreamhost más Googlemail. También debe indicar su dirección IP del servidor web (en mi caso, la línea antes de googlemail). La última línea le dice al servidor que haga un rechazo suave (marcar como correo no deseado pero no eliminar). Estoy usando en lugar de “-” (eliminar) porque la documentación de 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 ip4: 208.97.132.74 ip4: 67.205.36.71 incluye: aspmx.googlemail.com mx ~ all

Espero eso ayude