HeinrichB
Usuario (Francia)

Una gran cantidad de personas que programan en PHP llegan a la duda de cómo enviar un correo electrónico, si bien PHP tiene el comando mail() para el envío de correo estaríamos dependiendo de la presencia de un servidor de correo en la máquina que ejecutamos nuestro sistema. También contamos con opciones avanzadas como los de Pear, sin embargo son complejas de entender, aplicar y requieren la inclusión de bastantes librerías.En este post quiero enseñarles dos librerías que nos facilitarán la vida al momento de enviar todo tipo de contenido a traves del correo electrónico para tener un mejor contacto con nuestros clientes."Haciendo click en la imagen abrirá el sitio de SwiftMailerde donde se puede descargar la última versión"SwiftMailer es una gran librería que brinda muchas opciones para el envío de correos electrónicos con sus ventajas y desventajas: Plugins que aseguran el envío del correo y la integridad de nuestro servidor. Completa personalización, lo ideal para usuarios expertos. Ejecución bastante eficiente. Capacidad de integración y trabajo con PEAR. Código complejo de aprender y quizás entender.Veamos un ejemplo de código: <?php require_once 'lib/swift_required.php'; //Iniciamos el objeto de 'mensaje' $mensaje = Swift_Message::newInstance($transport); //Indicamos la direccion del remitente $mensaje->setFrom('[email protected]'); //Agregamos los destinatarios en un array asociativo, solo correo, o nombre y correo $mensaje->setTo(array( '[email protected]', '[email protected]' => 'Elsa Pato' )); //Determinamos el titulo de nuestro correo $mensaje->setSubject('El tema del correo'); //Escribimos el contenido de nuestro correo, podemos introducir texto plano o html. $mensaje->setBody("<h3>Un ejemplo cualquiera</h3>","text/html"); //Podemos tambien agregar mas texto al contenido $mensaje->addPart("Otro ejemplo que vamos a agregar"); //Habilitamos el transporte SMTP, con la direccion del servidor, el puerto y el tipo de conexion. $transporte = Swift_SmtpTransport::newInstance("smtp.dominio.com", 25, "ssl"); //Nos autentificamos con nombre de usuario y contraseña $transporte->setUsername("tu_nombre_de_usuario"); $transporte->setPassword("tu_contrasenia"); //Iniciamos el objeto de envio de correo con el de 'transporte' $mail = Swift_Mailer::newInstance($transporte); //Enviamos el objeto 'mensaje', con el transporte seleccionado $result = $mail->send($mensaje); if($result) echo "Se enviaron $result correos correctamente"; else echo "Hubo una falla, verifique".?> Este es un ejemplo sencillo para el envío de correo electrónico, sin embargo podemos hacer cosas más avanzadas como incluir archivos: $archivo = Swift_Attachment::fromPath('/direccion/al/archivo.jpg', 'image/jpeg');$mensaje->attach($archivo); También hacer uso de CC y CCO: $mensaje->setCc(array( "[email protected]", "[email protected]"=>"Elmer Curio"));$mensaje->setBcc(array( "[email protected]", "[email protected]"=>"Juanita")); Estas son las opciones básicas para el envío de correos, sin embargo existen más opciones de personalización que podemos encontrar en el sitio web de SwiftMailer."Haciendo click en la imagen abrirá el sitio de PHPMailerde donde se puede descargar la última versión"PHPMailer es el favorito de muchos por su simplicidad y facilidad de implementación, es altamente recomendable ya que sólo tienes que preocuparte en el mensaje y no tanto en cómo enviarlo, al igual que SwiftMailer tiene ventajas y desventajas que vale la pena recalcar: Facilidad de implementación, aprendizaje y entendimiento del código. Bastante ayuda en foros, blogs y demás sitios web por internet. Bastante seguro ante distintas formas de ataque. No es tan personalizable, quizás como usuario "común" no se note pero si como usuario avanzado. Como es bastante popular algunos hostings gratuítos bloquean el uso de este script.Ahora vamos con el ejemplo: <?php require_once 'class.phpmailer.php'; //Iniciamos el objeto PHPMailer $mail = new PHPMailer (); //Indicamos el correo y nombre del remitente $mail->From = "[email protected]"; $mail->FromName = "Tu_nombre"; //Agregamos al o los destinatarios $mail->AddAddress ("destino@empresa_cliente.com"); //Asignamos el titulo y contenido del correo, indicando que se trata de contenido HTML $mail->Subject = "Otra prueba"; $mail->Body = "<h3>Un ejemplo cualquiera</h3>"; $mail->IsHTML (true); //Inicializamos el transporte SMTP $mail->IsSMTP(); //Indicamos el host junto al tipo de conexion (SSL), el puerto y la autentificacion $mail->Host = 'ssl://smtp.dominio.com'; $mail->Port = 25; $mail->SMTPAuth = true; $mail->Username = 'tu_usuario'; $mail->Password = 'tu_contrasenia'; //Enviamos el correo, en caso que hubo un error lo mostramos if(!$mail->Send()) echo 'Error: ' . $mail->ErrorInfo; else echo 'Correo enviado!'.?> Este es un ejemplo sencillo para el envío de correo electrónico, sin embargo al igual que SwiftMailer con este script podemos hacer cosas más avanzadas como incluir archivos: $mail->AddAttachment("imagenes/img.jpg", "nombre_a_mostrar.jpg"); Y también hacer uso de CC y CCO: $mail->AddCC("[email protected]"); $mail->AddBCC("[email protected]"); Como vemos la implementación de PHPMailer es bastante sencilla y sólo hacemos uso de un único objeto a diferencia de SwiftMailer, pero la ventaja de SwiftMailer es su gran capacidad de personalización que de seguro es el banquete perfecto para usuarios avanzados.Al final es desición de cada uno tomar la herramienta que crea conveniente para el uso que le vaya a dar.BONUS 1Perfecto, quiero enviar mi correo electrónico, tengo SwiftMailer, tengo PHPMailer, pero espera, mi hosting gratuíto no me permite enviar correo electrónico, busqué y dice que tengo que pagar un hosting decente No hay problema los grandes servicios de correo electrónico (Gmail, Hotmail y Yahoo) nos brindan la posibilidad de enviar correo haciendo uso de sus servidores SMTP. Para ello obviamente es necesario poseer una cuenta y después cambiar en el script los siguientes datos:Gmail:Host: smtp.gmail.comPuerto: 465 (ssl) / 587 (tls)Tipo de conexion: ssl / tlsNombre de cuenta: [email protected]ña: **tu contraseña de Gmail**Remitente: [email protected]:Host: smtp.live.comPuerto: 25Tipo de conexion: tlsNombre de cuenta: [email protected] (hotmail, live, msn, etc.)Contraseña: **tu contraseña de Live**Remitente: [email protected] (hotmail, live, msn, etc.)Yahoo:Host: smtp.mail.yahoo.comPuerto: 465Tipo de conexion: sslNombre de cuenta: tu_usuario (tu usuario sin el @yahoo.com)Contraseña: **tu contraseña de Yahoo**Remitente: [email protected] 2Ok, pero yo tengo mi propio dominio y en vez que salga [email protected], quiero que salga [email protected] hace algunos años lanzó su opción para crear correos personalizados con el dominio propio, pero recientemente se puso a cobrar por brindar ese servicio.Si entramos a http://www.google.com/a/help/intl/es/business/applications.html podemos ver que si es posible trabajar con nuestro propio dominio mediante Gmail, pero nos cobran la módica suma de 4euros/cuenta de usuario/mes; imagina que queremos tener 10 usuarios en nuestra microempresa, nos saldría 40 euros extra al mes. Si no pudimos pagar un respetable servicio de hosting mucho menos pagaremos sólo por tener cuentas de correo que quizás ni lo usemos.Obviamente si tenemos una empresa grande y hacemos uso de todas las herramientas que nos brinda Gmail (Calendar, Docs, Video, etc.), el pago resulta siendo una inversión y no un gasto. Pero volvamos con nuestra microempresa. A protesta de muchos y alivio de otros viene Live al rescate... Si entramos al sitio: http://domains.live.com/, veremos un apartado poco conocido, Centro de Administración de Windows Live, donde crearemos nuestros correos con dominio personalizado y les daremos todo el poder que tiene un correo de Hotmail. Vamos por partes:1. Una vez dentro del sitio vamos a la opción Dominios personalizados, y hacemos click en Introducción.2. En la segunda pantalla pondremos nuestro dominio y seleccionamos "Sin correo para mi dominio" sólo por ahora.3. En la siguiente pantalla seleccionamos la primera opción "Iniciar sesion con una cuenta de Windows Live existente" (por seguridad es mejor usar cuentas externas, en este caso una existente de hotmail o live)4. Nos logueamos con nuestra cuenta de hotmail o live; si, aquella que usamos para chatear por messenger. 5. Una vez logueado nos saldrá una ventana de confirmación, Aceptamos.6. En la siguiente nos saldrá un aviso de fondo amarillo indicándonos que debemos demostrar la propiedad del dominio (de no ser así yo me crearía un correo [email protected] como si nada). Debajo del aviso nos salen configuraciones que debemos aplicar en nuestro dominio, entonces vamos a configurar el dominio.7. Entramos a nuestro panel de control del dominio, buscamos el apartado donde administramos nuestros DNS (ustedes sabrán como , eso varía de proveedor en proveedor).8. Configuramos los registros MX o TXT. y SRV como nos indica.9. Esperamos un día a que la información se propage por todos los DNS, entramos de rato en rato a ver si el aviso amarillo desaparece, cuando desaparezca significa que ya tendremos configurado nuestros propios correos con dominio y la capacidad de usar el SMTP de Hotmail para el envío de nuestro correo electrónico.10. Las próximas veces que ingresemos al sitio logueados con nuestro correo hotmail veremos la lista de nuestros dominios. Ingresamos y una vez dentro agregamos las cuentas necesarias, si queremos un correo personal podemos tenerlo e ingresar a ver la bandeja directamente desde hotmail.com.Eso es todo, espero que toda esta información le sirva a más de uno, no se olviden de comentar y si cometí algún error háganmelo saber así aprendemos todos haciendo énfasis al lema "Inteligencia Colectiva"; comentarios sin sentido serán borrados y usuario buscando bardo será bloqueado, saludos y a enviar correos...