2009-08-12 22 views
8

Soy nuevo en PHP, pero tengo un conocimiento decente de las cosas (aún no he aprendido las clases).PHPMailer v. Mail() para un formulario de contacto simple

La pregunta:

¿Cuál elegir? PHPMailer o mail() para mi nuevo formulario de contacto.

La forma es sencilla:

Your name: 
Your email: 
Subject: 
Body: 

Tengo alrededor de 2.000 visitantes por día recibió cerca de 10 presentaciones por día, por lo que no necesito nada demasiado lujoso. =)

cuestiones diversas en mi cabeza:

  • Is PHPMailer van a proteger mejor a mi Formulario de contacto de CC: inyección (mayor preocupación)? Ya conozco el truco anti-spambot display:none CSS.
  • ¿Me olvidará PHPMailer el paso de tener que escribir una función email_validator()?
  • ¿Me ahorrará PHPMailer en cualquier otro momento de tener que escribir funciones personalizadas?

Gracias! Con un poco de suerte, estaré respondiendo preguntas pronto. Lol

Respuesta

11

Esto es todo lo que pude pensar de una vez, perdónenme si hay omisiones flagrantes.

Las ventajas de usar PHP-construida en función de correo electrónico, ninguna biblioteca/envoltura externa:

  • No necesita nada fuera de PHP.
  • No es necesario que aprenda una nueva API.
  • No tiene que preocuparse por una actualización de PHP o tal romper la secuencia de comandos.
  • No tiene que preocuparse de que una versión actualizada de no funcione en su instalación de PHP .
  • No tiene que preocuparse por posibles vulnerabilidades de seguridad como como resultado del uso de esa secuencia de comandos.
  • Si es una tarea simple, habrá terminado en unos minutos.

Las ventajas de usar una biblioteca/envoltura externa:

  • Si necesita introducir más complejidad en su envío por correo electrónico, que puede hacerlo con bastante facilidad. Agregar archivos adjuntos, imágenes en línea y tal no son muy divertidos usando la función de correo simple PHP .Las bibliotecas externas (en menos las buenas) tienen una API OOPish más . Adición de un archivo adjunto puede ser tan fácil como $message->addAttachment($file); sin tener que jugar un poco con los encabezados, etc.
  • bibliotecas externas mejor ocultar las complejidades feos de tareas tales como la adición de adjuntos, carácter codificaciones y las imágenes en línea.
  • Usando una biblioteca ahora le ahorrará el molestia de tener que aprender en el futuro cuando haces necesitan la complejidad adicional /funcionalidad.
  • bibliotecas externas probablemente (estoy realmente seguro cuáles, y para qué medida) abordan ciertos vulnerabilidades que el correo de PHP no .

Si se me ocurre cualquier otra cosa, me aseguraré de añadirlo.

+0

cosas buenas. Porque no necesito capacidades HTML, archivos adjuntos, etc. Me estoy inclinando hacia el correo(). – Jeff

+0

@Jeff - Uso Zend_Mail para todos mis correos electrónicos. Dicho esto, probablemente usaría mail() si fuera por algo como lo que describiste en tu pregunta. No debe decidir basándose en una sola respuesta aquí, sino en un análisis detallado de su situación específica, que solo usted puede hacer. – karim79

0

PHPMailer es mi elección porque me permite enviar correos electrónicos SMTP a Google sin instalar ninguna biblioteca o configurar un servidor de correo, así no tengo que preocuparme por los problemas relacionados con el spam.

+0

Hola abales, debo mencionar que mi servidor de correo se ejecuta sin problemas, sin necesidad de Gmail o algo así. – Jeff

1

Esto tal vez no es realmente responder a todas sus preguntas, pero no va mal tampoco, supongo ...

Lo que usted quiere hacer, no volvería con mail(): el envío de un correo es no es una tarea tan fácil, y usar una biblioteca/marco existente siempre será una buena idea: resolverá muchos problemas que probablemente ni siquiera hayas pensado, incluso si no necesitas enviar muchos correos.


Sobre sus preguntas específicas, tal vez otras respuestas dirán otra cosa y/o obtener sus más información, pero cualquier "buena" biblioteca creada para enviar correos deben tratar con ese tipo de problemas ... otra cosa, debe probablemente la búsqueda de otra biblioteca ^^

Sin embargo, la prueba de un par de no más mensajes mudos le permitirá estar 100% seguro ;-)


otra solución para estar completamente seguros es comprobar la fuente de la biblioteca ;-)

En la fuente de la versión 2.2.1, encontrará cosas como esta:

class.phpmailer.php, la función AddAnAddress, línea 413, verá la siguiente:

if (!self::ValidateAddress($address)) { 
    $this->SetError($this->Lang('invalid_address').': '. $address); 
    if ($this->exceptions) { 
    throw new phpmailerException($this->Lang('invalid_address').': '.$address); 
    } 
    echo $this->Lang('invalid_address').': '.$address; 
    return false; 
} 

y parece se utiliza esta función por las otras funciones que agregan una dirección ...Por lo tanto, supongo que hay algún tipo de validación de direcciones e-mail ;-)
Eso va a responder por lo menos una de sus preguntas ^^


PHPMailer no es la única solución que existe, por cierto; hay un montón de otros, como, por ejemplo:

1

Como se ha mencionado Pascal MARTIN, el envío de un correo electrónico no es tan directo y fácil como algunas personas simplemente asumen que es. Para responder tus preguntas directamente. Sí PHPMailer sí valida, pero no es súper avanzado, pero debería ser suficiente para sus usos. Y PHPMailer le ahorrará tiempo dependiendo de las funciones personalizadas que necesite. Algunas cosas a tener en cuenta:

  • HTML vs texto sin formato. Si los correos electrónicos solo van a ti, probablemente no sea tan importante. Pero si alguna vez envía correos electrónicos a sus usuarios (por ejemplo, un correo electrónico de confirmación), desea poder admitir tanto clientes HTML como de texto sin formato. PHPMailer (y Zend_Mail) hacen que esto sea muy fácil de hacer.
  • SMTP. Este es otro que es realmente importante si está enviando correos electrónicos a sus usuarios, pero no tanto si solo se trata de un correo electrónico. Utilizando la función de correo regular() de php, el correo electrónico se enviará a través de sendmail, que casi todas las instalaciones de * nix vienen de fábrica (especialmente servidores). Como resultado, los filtros de spam no son muy amigables con eso. Si tiene una configuración de servidor SMTP regular con un registro MX de confianza (o si tiene una cuenta de Gmail), puede enviarla a través de SMTP, lo que ayudará a reducir las posibilidades de que su correo sea marcado como correo no deseado.

Además de solo PHPMailer Zend_Mail es bueno para consultar (es parte de Zend Framework). Sin embargo, eso puede ser demasiado para un simple formulario de contacto.

Cuestiones relacionadas