Foros del Web » Programando para Internet » PHP »

No hay caso, swiftmailer no funciona.

Estas en el tema de No hay caso, swiftmailer no funciona. en el foro de PHP en Foros del Web. Hola a todos, gracias por leer y espero que me puedan ayudar. Descargé la libreria de swiftmailer y subi la carpeta lib al servidor. En ...
  #1 (permalink)  
Antiguo 29/09/2012, 11:11
Avatar de pablolombardo  
Fecha de Ingreso: marzo-2012
Ubicación: Mar del Plata
Mensajes: 65
Antigüedad: 12 años, 1 mes
Puntos: 8
No hay caso, swiftmailer no funciona.

Hola a todos, gracias por leer y espero que me puedan ayudar.

Descargé la libreria de swiftmailer y subi la carpeta lib al servidor.

En el mismo lugar donde subí la carpeta tengo el archivo prueba.php:

Código PHP:
<?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('[email protected]');

   
//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.gmail.com"587"tls");

   
//Nos autentificamos con nombre de usuario y contraseña
   
$transporte->setUsername("[email protected]");
   
$transporte->setPassword("******");

   
//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".
?>
Ingreso a la url correspondiente y me sale el error 500:

Error HTTP 500 (Internal Server Error): Se encontró una situación inesperada mientras el servidor intentaba cumplir con la solicitud.

Ejecuté un phpinfo(); y todo lo referente a openSSL está enabled.

Aclaro que estoy hace muuucho tratando de resolverlo.
Ya probé usando el puerto 465.
También lo prové en dos servidores más (elserver y dattatec) y en localhost y exactamente lo mismo.

¿Qué más puedo hacer?

Gracias de antemano.
Saludoss.
__________________
Pablo Lombardo
http://www.pablolombardo.com/
  #2 (permalink)  
Antiguo 29/09/2012, 11:52
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: No hay caso, swiftmailer no funciona.

creo que no tienes el error reporting activado o si?? para ver algún mensaje de error o algo

Por cierto la variable $transport no esta definida o no esta el código completo, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 29/09/2012, 12:05
Avatar de pablolombardo  
Fecha de Ingreso: marzo-2012
Ubicación: Mar del Plata
Mensajes: 65
Antigüedad: 12 años, 1 mes
Puntos: 8
Respuesta: No hay caso, swiftmailer no funciona.

Gracias por responder carlos_belisario,

Ya agregé el error reporting.

Código PHP:
<?php
   
   error_reporting
(E_ERROR E_WARNING E_PARSE E_NOTICE);

   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('[email protected]'); 

   
//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.gmail.com"587"tls"); 

   
//Nos autentificamos con nombre de usuario y contraseña 
   
$transporte->setUsername("[email protected]"); 
   
$transporte->setPassword("******"); 

   
//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"
?>
El código que está acá es exactamente igual al que subí al servidor.

A la variable $transport simplemente la estoy llamando $transporte.

Lo ejecuté de esta forma e igualmente no me informa de ningún error en particular...

Cualquier cosa que se te ocurra dime, porque no tengo mucha experiencia en php y se me puede estar pasando cualquier cosa.

Gracias de nuevo.
__________________
Pablo Lombardo
http://www.pablolombardo.com/
  #4 (permalink)  
Antiguo 29/09/2012, 12:59
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: No hay caso, swiftmailer no funciona.

como puedes ver acá
https://github.com/swiftmailer/swift...essage.php#L30

el constructor de la clase Swift_Message no espera el transport, puedes ver bien cuales son los parámetros que este necesita

Por cierto no te da un error de variable indefinida??
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #5 (permalink)  
Antiguo 29/09/2012, 14:20
Avatar de pablolombardo  
Fecha de Ingreso: marzo-2012
Ubicación: Mar del Plata
Mensajes: 65
Antigüedad: 12 años, 1 mes
Puntos: 8
Respuesta: No hay caso, swiftmailer no funciona.

Hola, gracias. No puedo seguir, mañana pruebo lo que decís. De todos modos anteriormente lo tenia con la variable $transport y no funcionaba.

Mañana sigo.
__________________
Pablo Lombardo
http://www.pablolombardo.com/
  #6 (permalink)  
Antiguo 30/09/2012, 10:48
Avatar de pablolombardo  
Fecha de Ingreso: marzo-2012
Ubicación: Mar del Plata
Mensajes: 65
Antigüedad: 12 años, 1 mes
Puntos: 8
Respuesta: No hay caso, swiftmailer no funciona.

Buenas,

No me daba ningún error de ninguna clase, solo el 500.
Sinceramente no entendí lo que quisiste decir con el código de github...

De todos modos, me pasó que entré en youtube y me decía que una aplicación externa estaba tratando de usar mi cuenta. Así que supuse que estaba haciendo la conexión pero que gmail la bloqueaba (o algo así?).

Así que cambié el smtp para usar uno de hotmail, que en realidad ya lo había probado (probé con varios), pero nose porque se me ocurrió eliminar las últimas lineas del código:

Código PHP:
if($result) echo "Se enviaron $result correos correctamente";  
   else echo  
"Hubo una falla, verifique"
Las saqué porque vi que no eran necesarias y como para limpiar un poco (de casualidad va).

El tema es que sin esas linea funciona bien. Pero con hotmail e. Con gmail me pide autorización.
En realidad yo voy a usar otro correo por lo que no me interesa que funcione con Gmail.
Mi urgencia era que no lograba que funcionase ni cerca. Ahora ya se que es un tema con el smtp de Gmail nomás. ¿Y supongo que si autorizo la aplicación va a funcionar? Ahora pruebo.

Gracias por todo.
Saludoss.
__________________
Pablo Lombardo
http://www.pablolombardo.com/
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 03:46.