Pregunta

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

$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);
¿Fue útil?

Solución

Además de las sugerencias de Ted Percival, puede intentar usar PHPMailer para cree los correos electrónicos para usted en lugar de construir manualmente los encabezados. He utilizado esta clase de forma extensiva y no he tenido ningún problema con que Yahoo o cualquier otra persona rechace el correo electrónico no deseado como spam.

Otros consejos

  • No uses HTML en tu correo electrónico.
  • Envíelo a través de un servidor de correo legítimo con una dirección 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 agregue uno para usted).
  • Ejecute su correo electrónico a través de SpamAssassin y vea qué reglas de mala puntuación coincide. Evita emparejarlos.
  • Utilice correo identificado como DomainKeys para firmar digitalmente sus mensajes.

Acabo de intentar con éxito lo siguiente desde mi Yahoo! Cuenta de alojamiento 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);

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

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

También existe la posibilidad de que 'sendmail' (que está debajo de la función de correo () de PHP) necesite parámetros adicionales. Si tiene un problema con los encabezados de retorno (como Return-Path) que no están configurados con lo que usted estableció, es posible que deba usar el parámetro quinto mail (). Ejemplo:

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

¡Hay alguna evidencia adicional de que el verdadero sendmail de vainilla puede tener problemas con esto! Esperamos que tenga 'postfix' como soporte de correo () subyacente de PHP en su servidor de destino.

Además de sugerencias de Ted Percival , asegúrese de que la dirección IP de la que proviene el correo electrónico sea una fuente legítima de correo electrónico de acuerdo con el registro 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 simple; usaría el tipo de contenido de " multipart / alternative " en lugar de " texto / html " ;.

Las sugerencias de Ted son buenas, al igual que las de Tim, pero la única forma en la que he podido enviar un correo electrónico de manera confiable a través de Yahoo / Hotmail / etc es usar las clases de correo electrónico PEAR. Prueba esos & amp; (Suponiendo que su servidor esté bien) Puedo garantizar que funcionará.

Ted y Tim tienen excelentes sugerencias. Al igual que 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 correo no deseado no contarán con una versión de texto en tu contra si estás utilizando un formato MIME. Puede agregar todos los encabezados y la versión de texto usted mismo, o simplemente dejar que PHPMailer o la biblioteca de correo PEAR se encarguen de eso por usted. Tener una versión de texto puede o no ser útil, pero es una buena práctica y es fácil de usar.

Me doy cuenta de que su ejemplo de código es solo eso: un ejemplo, pero vale la pena decirlo: No solo nunca coloque los datos proporcionados por el usuario en sus encabezados de correo. Asegúrese de validar que son los datos que espera. Es trivial convertir un script de correo php en una retransmisión abierta, y nadie quiere eso.

Revise rfc 822 y rfc 2045 para el formato de correo electrónico. Me resulta muy fácil trabajar con la clase de correo electrónico de python. Supongo que la PEAR de php hace lo mismo (de acuerdo con correos anteriores). Además, el encabezado y el cuerpo están separados por un " \ r \ n \ r \ n " ;, no está seguro si su código lo inserta automáticamente, pero puede intentar agregarlo al encabezado.

No creo que DK / SPF pueda ser necesario (ya que hay muchos servidores web sin soporte de DK / SPF). Puede haber muchos factores que podrían estar causando que se bloquee (al menos 10K criterios y métodos diferentes. P0f, greylisting, greylisting, blacklisting, etc.). Asegúrese de que su correo electrónico esté correctamente formateado (esto hace una GRAN diferencia). Busque bibliotecas que generen el encabezado completo para usted ... de esa manera tendrá menos posibilidades de cometer errores.

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

Este es para Dreamhost más googlemail También debe indicar la 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 spam pero no eliminar) Lo estoy usando en lugar de " - " (eliminar) porque la documentación de google lo dice :-)

Es un registro de 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 ~ todos

Espero que ayude

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top