2009-06-10 14 views
6

Alojo mi sitio con GoDaddy, y utilizo la función PHP mail() en este momento para enviar correos electrónicos desde mi sitio. GoDaddy tiene un límite de retransmisión de 1000 SMTP por día para las cosas de correo electrónico, pero juran que con mi script PHP no debería tocarlo.¿Qué servidor SMTP usa PHP mail() de forma predeterminada, y hay mejores opciones?

  1. Desde mail() no toma información SMTP, no sólo se utilice automáticamente GoDaddy de (o lo que sea de alojamiento puede estar encendido)?

  2. Si mi sitio va a esperar más de 1000 correos electrónicos enviados por día (instancias separadas, no en un bucle), ¿debería usar un método diferente, o es mail() la elección correcta?

+1

¿Es esta PHP en Linux o Windows? – Kev

+0

es alojamiento compartido en Linux :) – johnnietheblack

Respuesta

9

Php usa de manera predeterminada, el servidor de correo local. Sin embargo, puede especificar esto en su archivo de configuración php.ini.

Si va a enviar más correos electrónicos que eso, es posible que desee ver en la búsqueda de un servidor diferente al correo de, o alternativa de alojamiento

+0

¿puedo especificar CUALQUIER servidor? por ejemplo ... ¿puedo enviar a través del servidor de Gmail, pero retener mi nombre de dominio en mi correo electrónico? que probablemente parezca una pregunta estúpida, pero es impreciso en esta área – johnnietheblack

+0

@johnnietheblack: si puede acceder al archivo php.ini (es decir, la configuración de PHP), puede configurar el servidor SMTP a lo que desee. (Esto definitivamente no es el caso en cualquier tipo de alojamiento compartido) – Piskvor

4

Si es necesario utilizar un servidor de correo electrónico externo que requiere autenticación, no podrá usar la función PHP mail().

recomiendo el uso de: http://pear.php.net/package/Mail

+0

, ¿qué significa si alojo en GoDaddy que no puedo apuntar mi script mail() a un SMTP autenticado diferente en un servicio de hosting que no se preocupa por ¿cuántos envío sin usar PEAR? gracias por su paciencia :) – johnnietheblack

+1

La función mail() es muy básica y no admite el envío de un enlace de clave de nombre de usuario/contraseña a los hosts SMTP que requieren autenticación.Tienes que escribir un montón de código personalizado para que funcione la función de correo(), por lo que sugerí un paquete = P Espero que ayude. –

1

Si es necesario utilizar una tercera parte de servicios de correo que recomiendo dejar caer el uso de mail() y reemplazarla con la biblioteca SwiftMailer. Es un componente rico en características (admite autenticación, archivos adjuntos, encriptación, etc.) que hemos utilizado en algunos lugares. También es gratis y de código abierto.

+0

lo verifico, gracias :) ¿funciona bien para correo masivo? mejor que PEAR? – johnnietheblack

+0

Desafortunadamente, no se pudo hacer ninguna comparación con el paquete de correo PEAR. Parece funcionar bien con los anuncios masivos, consiguió que un par de clientes lo usen. – Kev

4

En una máquina * nix, la función PHP mail() no es compatible con SMTP, sino que usa el sendmail() u otro script de correo configurado en el servidor. Este script puede enviar a través de un SMTP, pero esta no es la manera más fácil dentro de PHP (a menos que ya tenga el script). Para usar SMTP, recomendaría PHPMailer. Lo he estado utilizando durante algunos años y me han impresionado. Admite SMTP junto con muchos otros protocolos y también tiene otras funciones útiles, como agregar un cuerpo de solo texto para un correo electrónico HTML y crear los encabezados de correo electrónico adecuados. También puede ampliar la clase para establecer los valores predeterminados, como el servidor SMTP y el correo electrónico/nombre para que no tenga que configurar estos cada vez que desee enviar un correo electrónico. También hace muy buenos informes de errores y depuración.

También recomendaría esta clase para enviar miles de correos electrónicos. Hace poco> 5000 en un día con eso y no tuve problemas.

2

mail() utiliza la configuración definida en php.ini. Los servidores de Windows requieren un servidor smtp real, mientras que los servidores * nix usarán cualquier mta instalado en el servidor (si lo hay).

Como han mencionado otros, si desea utilizar un servidor smtp alternativo, use una biblioteca alternativa como SwiftMailer. También querrá asegurarse de que el servidor smtp sea rápido. He visto ralentizaciones al usar un servidor smtp como gmail.

GoDaddy utiliza un Smart SMTP Relay, incluso en servidores dedicados alojados con GoDaddy. El límite se basa en cuántos correos electrónicos pasan por el Smart Relay.

Si tiene un motivo válido para enviar más correos electrónicos y puede verificar que su sitio no envía correo no deseado y que todos los correos electrónicos son opcionales, la asistencia aumentará el límite si le brinda un estimación de la cantidad de correos electrónicos que necesita enviar.

1

He estado utilizando el proyecto de código abierto phpmailer durante unos siete años-- ¡es fantástico! Puede usarlo para conectarse a un servidor SMTP externo.

2

Como se trata de un antiguo puesto que pensé que sería útil que he actualizado la respuesta -

Esto es mucho más fácil de hacer ahora de lo que solía ser :-) En PHP 4 el paquete PEAR Mail es por lo general ya está instalado, y este tutorial realmente simple muestra las pocas líneas de código que necesita agregar a su archivo php http://email.about.com/od/emailprogrammingtips/qt/PHP_Email_SMTP_Authentication.htm

La mayoría de las empresas de alojamiento enumeran las configuraciones SMTP que necesitará. Yo uso JustHost, y que la lista de ellos en https://my.justhost.com/cgi/help/26(en Servidor de correo saliente)

4

no uso función mail() de PHP que enviará el correo a la basura solamente. En su lugar, use la función SMTP php mailer.

¿Por qué debemos utilizar SMTP en lugar de PHP mail():

SMTP registro en una cuenta real en un servidor de correo y enviar el correo a través de SMTP a otro servidor de correo. Si el servidor de correo está configurado correctamente, sus correos electrónicos se envían desde una cuenta real en un servidor de correo y no se marcarán como correo no deseado.

El correo enviado con la función de correo() se envía con sendmail en la mayoría de los casos. No hay autenticación y casi siempre se marcará como correo no deseado si usa el "De:" en los encabezados adicionales.

Esto se debe a que si echa un vistazo a un archivo de correo electrónico original, por ejemplo, gmail, verá los encabezados que se envían. En realidad está enviando desde [email protected] y no a [email protected] como le había dicho a la función de correo electrónico. Si utiliza SMTP y ver el original que el email sea enviado desde [email protected]

Puede descargar la clase de SMTP:

  1. https://code.google.com/a/apache-extras.org/p/phpmailer/source/browse/trunk/class.smtp.php?r=170
  2. http://www.phpclasses.org/package/14-PHP-Sends-e-mail-messages-via-SMTP-protocol.html
Cuestiones relacionadas