2011-02-28 12 views
6

He estado usando la función de correo php para enviar correos electrónicos que contienen detalles de la cuenta a clientes cuando están registrados pero acabo de descubrir que algunas personas no están recibiendo correos electrónicos. P.ej. cuando envío un correo electrónico a cada uno de mis colegas cuando se prueba sólo yo y otro colega de correo electrónico está recibiendo laFunción de correo PHP no está enviando correos electrónicos a ciertas direcciones

- me who received email 
- [email protected] 
- collegue who received email 
- [email protected] 
- collegue who did not receive emails: 
- email 1 - [email protected], 
- email 2 - [email protected] 
- collegue who did not receive emails: 
- [email protected] 
- collegue who did not receive emails: 
- [email protected] 

Los correos electrónicos no son recibidos en la carpeta de correo no deseado ya sea ..

$from = "companyy <[email protected]>";   
$subject = "$username Account Details for companyy.co.uk";  
$message = "You have been registered as an administrator of companyy Online. 
You can manage your clients, bills and other account functions online.  

Your Username: $username 
Your Password: $password2 
Your Four-Digit PIN: $PIN   

Once logged in you can change your password to something you will find easier to remember. Please delete this email once you have changed your settings or memorised them.   

Thank you   

This is an automated response, please do not reply!"; 

mail($email, $subject, $message, $from); 
Header('Location: results.php?msg=Added Successfully'); 
+0

A pesar de que no terminen en la carpeta de correo no deseado, muchos puntos en las respuestas a "¿Por qué mis mails terminan en la carpeta de correo no deseado" preguntas (http : //stackoverflow.com/search? q = php + spam + correo) se aplican a esto también. ¿Se está ejecutando este script en el servidor de 'companyy.co.uk'? –

+1

Eche un vistazo al artículo de Jeff Atwoods sobre el envío de correo electrónico: algunos errores no obvios allí: http://www.codinghorror.com/blog/2010/04/so-youd-like-to-send-some-email-through-code .html –

+0

¿está utilizando sendmail o qué tipo de servidor de correo? –

Respuesta

0

Parece que los correos electrónicos son enviados El problema está en el lado receptor. Compruebe si hay spam o filtros. Puede registrar los correos enviados para asegurarse de lo que se envió.

+0

¿cómo se registran los correos electrónicos enviados? gracias @Elzo Valugi – pam

+1

Estarían en el servidor de correo de su servidor (algo así como/var/log/mail si está en un sistema unix-ish). PHP 'mail()' no envía correo, simplemente lo entrega al servidor de correo del servidor para hacer la entrega. Le * MENTIRá a usted acerca de la entrega exitosa, ya que solo hace una entrega local. –

+0

Simplemente el registro de lo que se envió todavía no le dirá la verdad acerca de si la entrega se completó. Solo dice lo que salió por la puerta. Puede BCC usted mismo para asegurarse de que se está transmitiendo a alguien, pero eso todavía no explica por qué una persona y no otra recibe el correo electrónico. – bpeterson76

0

Usted tiene que depurar $email, tal vez es vacía o falso:

var_dump($email); 

Pero este problema probablemente no está relacionada con php. En primer lugar, consulte un sitio de lista negra de correo electrónico, como http://www.mxtoolbox.com/blacklists.aspx

Si no puede encontrar su cuadro en una lista negra, debe contactar al administrador del servidor, quien debe verificar los registros.

+0

no son correos electrónicos vacíos o falsos porque estoy probando usando las direcciones de mis colegas – pam

+0

¿Intentó volcar la variable justo antes del 'mail()'? Si realmente es la dirección de correo electrónico correcta, este problema no está de su lado, debe ponerse en contacto con el administrador del sistema. – Eduard7

0

puede tener una dirección IP que ha sido incluida en la lista negra, común en el alojamiento compartido. o bien mover los servidores de correo electrónico o subcontratar a SendGrid o postmarkapp

0

Compruebe el mensaje y asegúrese de que está separado w/PHP_EOL

mensaje a enviar.

Cada línea debe separarse con un LF (\ n). Las líneas no deben ser mayores que 70 caracteres.

por ejemplo:

$message = 'This message was sent via PHP!' . PHP_EOL . 
      'It should work ... and it does.' . PHP_EOL . PHP_EOL . 
      'From Display Name' . PHP_EOL; 
// In case any of our lines are larger than 70 characters, we should use wordwrap() 
$message = wordwrap($message, 70); 

Al utilizar PHP mail

7

Aquí está un pequeño secreto sucio sobre el envío de mensajes de correo electrónico: se pierde el control. Una vez que han abandonado su servidor, es por la gracia de los dioses de Internet que su correo electrónico llega a su destino. En el camino, "apretones de manos" de una red a la siguiente. Alcanza su destino final y luego está sujeto a multitud de filtros y reglas de spam que muchas personas técnicas no conocen. Por ejemplo, ¿sabía usted que MSN Hotmail, AOL, etc. no aceptará más de una cierta cantidad de correos electrónicos de un servidor (rango de IP) a la vez? Una vez que llegue al límite predeterminado (e inédito) del servidor, el correo electrónico se mantendrá independientemente de su clasificación de correo no deseado. Eventualmente se dejará pasar, pero significa que la solicitud de contraseña que hace su usuario no será instantánea. Aquí hay otro tidbit: los servidores obtienen "confianza" en función de la longevidad del dominio y de otros factores que tampoco están publicados. ¿Tu dominio ha sido de larga duración? ¿Está en una lista en un blacklist? Es el correo electrónico "spam" (consulte con una herramienta like this)

Luego hay sitios como AOL donde incluso los correos electrónicos de buena calidad de servidores de buena calidad simplemente no se entregan con regularidad. (Google "aol capacidad de entrega" para leer un poco divertido)

Entonces, ¿qué hacer? Comience con la comprobación de la lista negra. Si eso es bueno, revisa los encabezados. ¿La dirección "de" coincide con el dominio desde donde se envía el correo electrónico y esa cuenta es válida?Esa puede ser una gran bandera roja de spam. Para evitar este problema, mi empresa (que envía más de 50,000 correos electrónicos por día) suele configurar cuentas de respuesta "falsas". ¿Estás en la lista blanca para los usuarios con los que estás probando? ¿Los usuarios están usando un programa como Outlook que realiza al azar su propia lista negra? Cambie su mensaje y vea si mejora la capacidad de entrega. Pruebe con múltiples hosts diferentes para ver si se trata de un solo sistema en particular.

enjuague, repita, y continuar ...

Cuestiones relacionadas