Foros del Web » Administración de Sistemas » Software para Servers »

Instalación PHPMailer en Ubuntu y LAMP

Estas en el tema de Instalación PHPMailer en Ubuntu y LAMP en el foro de Software para Servers en Foros del Web. Estoy intentando instalar "phpmailer" en Ubuntu com LAMP Server, os pediría por favor que me hecharais una mano y me digais en que me equivoco. ...
  #1 (permalink)  
Antiguo 19/06/2012, 06:46
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años
Puntos: 10
Instalación PHPMailer en Ubuntu y LAMP

Estoy intentando instalar "phpmailer" en Ubuntu com LAMP Server, os pediría por favor que me hecharais una mano y me digais en que me equivoco.
Tengo manuales para Sendmail y Postfix con sus programas dependientes pero prefiero comenzar por phpmailer que me habeis dicho en otro post que es mas facil, para ello usare mi correo de "gmail.


1.- Sistema operativo Ubuntu 11.04, instalados y corriendo LAMP Server más phpmyadmin.

2.- Directorio web "/var/www/".

3.- Descargamos "phpmailer" de aquí:

http://sourceforge.net/projects/phpm...Mailer%20v5.1/

4.- Nos olvidamos de "php.ini" en "/etc/php5/apache2/php.ini", no se necesita pues phpmailer en una clase a la que se llama, creo.

5.- Descomprimimos el archivo .zip a un directorio que llamamos "phpmailer", este directorio lo metemos en el directorio web "/var/www/ y le damos permisos "chmod -R 755 /var/www/phpmailer".

6.- No tocamos nada en estos archivos de phpmailer

7.- Construimos el formulario en un archivo html o php que llamamos "contacto.html", un ejemplo podría ser este:

contacto.html

Código HTML:
<!DOCTYPE HTML>
  <html lang="EN" dir="ltr">
  <head profile="http://gmpg.org/xfn/11">
  <title>Contacto</title>
  <meta charset="utf-8">
  <link rel="stylesheet" href="styles/layout.css" type="text/css">
  </head>
  <body id="top">
  <div class="wrapper row3">
    <div id="container" class="clear">
      <div id="content">
        <h1> &nbsp; &nbsp;FORMULARIO DE CONTACTO: </h1>
        <div id="respond">
          <form action="enviar_contacto.php" method="post" id="formulariocontacto">
              <p><strong>Nombre:</strong><br>
              <label for="nombre"></label>
              <input name="nombre" type="text" id="nombre" onBlur="MM_validateForm('nombre','','R','email','','RisEmail','asunto','','R','texto','','R');return document.MM_returnValue">
              <br>
              <strong>E-mail:</strong><br>
              <label for="email"></label>
              <input type="text" name="email" id="email">
              <br>
              <strong>Asunto:</strong><br>
              <label for="asunto"></label>
              <input type="text" name="asunto" id="asunto">
              <br>
              <strong>Teléfono:</strong><br>
              <label for="telefono"></label>
              <input type="text" name="telefono" id="telefono">
              <br>
              <br>
              <strong>Texto: </strong><br>
              <label for="texto"></label>
              <textarea name="texto" id="texto" cols="40" rows="5"></textarea>
  &nbsp;<br>
  <br>
            </p>
              <p>
    <input name="submit" type="submit" id="submit" value="Enviar">
                &nbsp;
                <input name="reset" type="reset" id="reset" tabindex="5" value="Restablecer">
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
          </form>
        </div>
      </div>
    </div>
  </div>
  </body>
  </html> 
Nótese la acción que es un archivo que llamaremos "enviar_cotacto.php" que es que hay que construir y será el que verdaderamente enviara el formulario. Yo lo voy hacer con mi "gmail", también se puede hacer con "hotmail" y "yahoo" creo.


8.- Ahora construimos el archivo "enviar_contacto.php" según he visto, no se si estará bien por lo que acudo a vosotros para después probarlo.


enviar_contacto.php

Código PHP:
<?php
include("phpmailer/class.phpmailer.php"); //pacht o direccion del archivo class.phpmailer.php (el directorio phpmailer estara en el directorio web www o html segun el server

    
$mail->IsSMTP();  // enviar vía SMTP
$mail->Host     "smt.gmail.com"// Servidores SMTP
$mail->SMTPAuth true;     // activar la identificacín SMTP
$mail->Username "[email protected]";  // usuario SMTP
$mail->Password "pepitodelospalotes"// clave SMTP

SetLanguage('es','phpmailer/language/'))  // lenguaje español
{
    echo 
'

No se ha podido cargar el fichero de idioma adecuado.

'
;
}
// Adquirimos las variables del formulario y mas
$dia=date("d.m.Y");
$hora=date("H:i:s");
$nombre $_POST['nombre'];
$email $_POST['email'];
$asunto $_POST['asunto'];
$telefono $_POST['telefono'];
$texto $_POST['texto'];
$mensaje "
 El mensaje se a enviado el dia: $dia a las: $hora\n\n 
----------------------------------------------------------------------------\n
 Nombre: $nombre\n
 Email:  $email\n
 Telefono:  $telefono\n
 Asunto:  $asunto \n
 Texto:  $texto\n
 ----------------------------------------------------------------------------\n
 "
;

// Introducimos la información del remitente del mensaje
$mail->From     "[email protected]";
$mail->FromName "FORMULARIO DE CONTACTO";  
$mail->AddReplyTo("[email protected]","Informasión");

// y los destinatarios del mensaje. Podemos especificar más de un destinatario
$mail->AddAddress("[email protected]","FORMULARIO DE CONTACTO");
$mail->AddCC("[email protected]"); // También podemos enviar con copia de carbón
$mail->AddBCC("[email protected]"); // y copia de carbón oculta

// Establecemos los parámetros del mensaje: ancho y formato.
$mail->WordWrap 250// ancho del mensaje
$mail->IsHTML(true); // enviar como HTML

// Añadimos el mensaje: asunto, cuerpo del mensaje en HTML y en formato
// solo texto
$mail->Subject  =  $asunto;
$mail->Body     =  $mensaje;
$mail->AltBody  =  $mensaje// Para los queno pueden recibir en formato HTML

if(!$mail->Send())
{
   echo 
"El mensaje no se ha podido enviar

"
;
   echo 
"Error: " $mail->ErrorInfo;
   exit;
}
echo 
"El mensaje se ha enviado correctamente";
?>
Me equivoco en algo ????

Muchísimas gracias de antemano.

Un saludo



  #2 (permalink)  
Antiguo 19/06/2012, 06:55
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años
Puntos: 10
Respuesta: Instalación PHPMailer en Ubuntu y LAMP

Se me olvidaba, por supuesto ir a tu correo gmail y en Configuracion - Reenvio y correo POP/IMAP activar la casilla "Habilitar imap"

Un saludo
  #3 (permalink)  
Antiguo 20/06/2012, 12:12
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años
Puntos: 10
Respuesta: Instalación PHPMailer en Ubuntu y LAMP

Bueno, lo que he hecho es lo siguiente:

Tengo tres host virtuales creados en este servidor, por lo que dentro de /var/www/ tengo su directorio que llamaremos pepito.com, dentro de estre directorio he metido el directorio phpmailer, la pagina con su formulario y su enviar_contacto.php, he dado los permisos y claro rellenado los datos de mi cuenta gmail en el enviar_contacto.php.

Me meto en la web, voy al formulario, lo relleno y lo envio no me sale nada y en mi correo de yahoo no he recibido nada.

Me fui a /var/log/apache2/access.log y me tira este error, es el 500:

Código:
96.36.22.215 - - [20/Jun/2012:18:54:34 +0100] "GET /enviar_contacto.php HTTP/1.1" 500 289 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)"
Por lo que veo no funciono y cre que es algo relacionado con el formulario y enviar en las variable, yo las hice como visteis antes, las del formulario POST, y las de enviar POST, seran todas GET ???

Un saludo
  #4 (permalink)  
Antiguo 20/06/2012, 16:46
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Instalación PHPMailer en Ubuntu y LAMP

Te sugiero que primero utilices los archivos de prueba que están en la carpeta
/examples del zip original de phpmailer
Solo tenés que modificar la variable $address con la dirección de correo de destino

$address = "[email protected]"; --> aqui
$mail->AddAddress($address, "John Doe");

Y debería verificar el error.log no el access.log

SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #5 (permalink)  
Antiguo 21/06/2012, 01:06
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años
Puntos: 10
Respuesta: Instalación PHPMailer en Ubuntu y LAMP

Hombre muchisimas gracias por molestarte en responder.


1.- No hace falta crear el directorio phpmailer, solo coger los archivos.

class.phpmailer.php y class.smtp.php

poniendolos directamente en el directorio web www o html

2.- Ok error.log

[CODE]
Thu Jun 21 07:45:56 2012] [error] [client 90.26.235.220] PHPParse error: syntax error, unexpected')' in /var/www/pepitotv/enviar_contacto.php on line 20, referer:http://www.pepito.tv/contacto.php
[/CODE]

la linea 20 va relacionada a esto:

Código:
SetLanguage('es','phpmailer/language/'))
MUCHISIMAS gracias por haber respondido tengo otro enviar_contacto.php sin lenguage miralo a ver:

Código PHP:
<?php
// Adquirimos las variables del formulario y mas
$dia=date("d.m.Y");
$hora=date("H:i:s");
$nombre $_GET['nombre'];
$email $_GET['email'];
$asunto $_GET['asunto'];
$telefono $_GET['telefono'];
$texto $_GET['texto'];
$mensaje "
 El mensaje se a enviado el dia: $dia a las: $hora\n\n 
----------------------------------------------------------------------------\n
 Nombre: $nombre\n
 Email:  $email\n
 Telefono:  $telefono\n
 Asunto:  $asunto \n
 Texto:  $texto\n
 ----------------------------------------------------------------------------\n
 "
;

    require(
"class.phpmailer.php"); 
//------------------------------------------------------
    
$correo_destino="[email protected]"//a que correo llega
    
$nombre_destino="Pepe"//nombre de quien recibe
    
$correo_emisor="[email protected]"//tu correo
    
$nombre_emisor="Pepe"//tu nombre
    
$contrasena="contraseña"//contraseña de tu usuario
//--------------------------------------------------------
    
$mail = new PHPMailer();
    
$mail->IsSMTP(); // Envia el correo via SMTP
    
$mail->SMTPAuth true// Enciende la autenticacion SMTP
    
$mail->Username $correo_emisor// Usuario SMTP
    
$mail->Password $contrasena// Contrasena SMTP    
    
$mail->From $correo_emisor;
    
$mail->FromName $nombre_emisor//Nombre del que envia el correo
    
$mail->AddAddress($correo_destino,$nombre_destino);
    
$mail->AddReplyTo($correo_emisor,$nombre_emisor);
    
$mail->WordWrap 50// Word wrap
    
$mail->IsHTML(true); // Enviar como HTML
    
$mail->Subject "FORMULARIO DE CONTACTO"//Asunto
    
$mail->Body $mensaje//Cuerpo en HMTL
    
$mail->AltBody "
 El mensaje se a enviado el dia: $dia a las: $hora\n\n 
----------------------------------------------------------------------------\n
 Nombre: $nombre\n
 Email:  $email\n
 Telefono:  $telefono\n
 Asunto:  $asunto \n
 Texto:  $texto\n
 ----------------------------------------------------------------------------\n
 "
//Cuerpo en Texto plano
    
if(!$mail->Send()){
      echo 
"Error: " $mail->ErrorInfo;
    }else{
      echo 
"El Correo se ha enviado satisfactoriamente";
    }
?>
Un saludo
  #6 (permalink)  
Antiguo 21/06/2012, 01:41
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Instalación PHPMailer en Ubuntu y LAMP

acá por lo pronto te sobra un cierre paréntesis al final
SetLanguage('es','phpmailer/language/'))
y debería ir un punto y coma
SetLanguage('es','phpmailer/language/');



SAludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #7 (permalink)  
Antiguo 21/06/2012, 01:45
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años
Puntos: 10
Respuesta: Instalación PHPMailer en Ubuntu y LAMP

OK lo reviso y te digo algo a la noche, ahora me voy a volar con mi drone cuatrino OK.

Muchas gracias por tu atención
  #8 (permalink)  
Antiguo 21/06/2012, 13:30
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años
Puntos: 10
Respuesta: Instalación PHPMailer en Ubuntu y LAMP

Bueno, bueno, perdona pero debo de hacer demasiadas tareas a la vez.

Por D............ por fin ya me envia los formularios, con algunos problema que te expondre al final.

1.- Me he cargado en el directorio virtual de un dominio con el que hago pruebas en este server, el directorio phpmailer que habia creado con todo lo de la descarga de phpmailer.

2.- He conseguido dos archivos arreglados para gmail:

class.smtp.php y class.phpmailer.php

Si se quiere usar con otros servidores de correos como hotmail o yahoo solo hay que cambiar en el archivo class.smtp.php
Las dos siguientes lineas:

$host = "ssl://smtp.gmail.com";
$port = 465;

Si quereis os los paso.

El archivo enviar:contacto.php que he usado es este:

Código PHP:
<?php
// Adquirimos las variables del formulario y mas
$dia=date("d.m.Y");
$hora=date("H:i:s");
$nombre $_GET['nombre'];
$email $_GET['email'];
$asunto $_GET['asunto'];
$telefono $_GET['telefono'];
$texto $_GET['texto'];
$mensaje "
 El mensaje se a enviado el dia: $dia a las: $hora\n\n 
----------------------------------------------------------------------------\n
 Nombre: $nombre\n
 Email:  $email\n
 Telefono:  $telefono\n
 Asunto:  $asunto \n
 Texto:  $texto\n
 ----------------------------------------------------------------------------\n
 "
;
    require(
"class.phpmailer.php"); 
//------------------------------------------------------
    
$correo_destino="[email protected]"//a que correo llega
    
$nombre_destino="Armando "//nombre de quien recibe
    
$correo_emisor="[email protected]"//tu correo
    
$nombre_emisor="Armando"//tu nombre
    
$contrasena="1"//contraseña de tu usuario
//--------------------------------------------------------
    
$mail = new PHPMailer();
    
$mail->IsSMTP(); // Envia el correo via SMTP
    
$mail->SMTPAuth true// Enciende la autenticacion SMTP
    
$mail->Username $correo_emisor// Usuario SMTP
    
$mail->Password $contrasena// Contrasena SMTP    
    
$mail->From $correo_emisor;
    
$mail->FromName $nombre_emisor//Nombre del que envia el correo
    
$mail->AddAddress($correo_destino,$nombre_destino);
    
$mail->AddReplyTo($correo_emisor,$nombre_emisor);
    
$mail->WordWrap 50// Word wrap
    
$mail->IsHTML(true); // Enviar como HTML
    
$mail->Subject "FORMULARIO DE CONTACTO"//Asunto
    
$mail->Body $mensaje//Cuerpo en HMTL
    
$mail->AltBody "
 El mensaje se a enviado el dia: $dia a las: $hora\n\n 
----------------------------------------------------------------------------\n
 Nombre: $nombre\n
 Email:  $email\n
 Telefono:  $telefono\n
 Asunto:  $asunto \n
 Texto:  $texto\n
 ----------------------------------------------------------------------------\n
 "
//Cuerpo en Texto plano
    
if(!$mail->Send()){
      echo 
"Error: " $mail->ErrorInfo;
    }else{
      echo 
"El Correo se ha enviado satisfactoriamente";
    }
?>
El problema estriba en que no recibo la informacion que se rellena en el formulario solo esto:

El mensaje se a enviado el dia: 21.06.2012 a las: 19:09:03 ---------------------------------------------------------------------------- Nombre: Email: Telefono: Asunto: Texto: ----------------------------------------------------------------------------

Nada de email, telefono etc
Tendre que mover las variables del formulario mas abajo por debajo de request ???

Sera que el formulario las variables estan con GET y no con POST, como veis en enviar_contacto.php estn en GET tambien y no en POST.


Muchisimas gracias, Un saludo

Última edición por manyblue; 21/06/2012 a las 14:25
  #9 (permalink)  
Antiguo 21/06/2012, 14:37
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años
Puntos: 10
Respuesta: Instalación PHPMailer en Ubuntu y LAMP

Y solo otra cosita mas para poder cerrar el post.

En el correo recibido en mi yahoo en donde pone de me aparece un mombre pero cuando despliego me aparece el correo de gmail se puede evitar esto ??

Muchisimas gracias.

Un saludo
  #10 (permalink)  
Antiguo 21/06/2012, 16:10
Avatar de manyblue  
Fecha de Ingreso: marzo-2008
Mensajes: 329
Antigüedad: 16 años
Puntos: 10
Respuesta: Instalación PHPMailer en Ubuntu y LAMP

Chamos que me contesto yo mismo jajajajajaja.

1.- Cambie el formulario de contacto y enviar_contacto.php al metodo POST, sin ningun problema ya me llega la informacion del formulario.

2.- Tuve que sustituir \n po <br> saltar parrafo \ no va.

3.- Todo perfecto excepto los acentos, co........ tengo mi server en UTF-8 ???
Nada me fui a class.phpmailer.php y dentro busque:

Public_charset = "UTF-8"

y zanjado el tema ya me envia la web los formularios y perfecto.


Bueno pero de eso de ver que el correo del que llega el mensaje es de gmail y no del dominio, pos bueno, por el momento lo solucionare de la siguiente for:

Como el dominio lo compro y tengo derecho a 10 correos o mas, usare el smtp del correo de mi dominio y asi :

Zanjado tema POR FIN.

Muchiiiiiisimas gracias por vuestra atencion.


PD: No descansare hasta montar un verdadero server de correo tanto con Sendmail como Postfix, creo tengo los tutos necesarios ya.


Un saludo

Etiquetas: apache, instalación, ip, lamp, php, phpmailer, server, servidor, ubuntu
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:16.