Foros del Web » Programando para Internet » PHP »

ayuda con phpMailer

Estas en el tema de ayuda con phpMailer en el foro de PHP en Foros del Web. hola a todos, estoy trabajando con la libreria phpMailer, y la verdad es que funciona bastante bien. solo tengo un problema. quiero hacer un emailing, ...
  #1 (permalink)  
Antiguo 23/03/2009, 09:27
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
ayuda con phpMailer

hola a todos,

estoy trabajando con la libreria phpMailer, y la verdad es que funciona bastante bien.

solo tengo un problema. quiero hacer un emailing, y quiero que el body sea un html.

he insertado en el body el html, con sus etiquetas, es decir, un html maquetado. pero me da el error de las "" ENCAPSULATED....

hay que insertarlo de alguna forma especial?

slaudos
  #2 (permalink)  
Antiguo 23/03/2009, 09:31
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: ayuda con phpMailer

¿Que es lo que te da error?
¿Las comillas dobles?

Entonces tienes que escaparlas usando una barra invertida \"

Sino es eso, dejame saber :P
  #3 (permalink)  
Antiguo 23/03/2009, 09:53
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ayuda con phpMailer

http://www.forosdelweb.com/f18/como-...1/#post2414268
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 23/03/2009, 10:42
Avatar de cesarpunk  
Fecha de Ingreso: enero-2008
Ubicación: Lima
Mensajes: 943
Antigüedad: 16 años, 3 meses
Puntos: 9
Respuesta: ayuda con phpMailer

pues yo uso la version 1.02 (y no creo que sea por eso) y no tengo ningun problema? .... diseño en un archivo html aparte la tablita que se vera en el correo.... obviamente que en las tablas html llevan comillas dobles por defecto (" ") asi que yo copio todo mi html y lo pego en:

$mail->Body =' [tabla] '; //usando afuera las comillas simples.

claro que si tengo que poner datos php simplemente lo concateno ".$dato."
sin necesitar de estar tipeando los / .... no te compliques con eso, saludos!
__________________
Quitenme la vida pero no la bebida.
  #5 (permalink)  
Antiguo 23/03/2009, 10:43
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
Respuesta: ayuda con phpMailer

gracias a los 2 por responder.

el problema es el siguiente. como os he dicho tengo lo siguiente:


$body="<html><body>......";

ese codigo que he copiado funciona perfectamente si lo eejecuto por separado. lo que haces es coger de la base de datos de noticias, un listado con las noticias de la semana.

lo que hago es cambiar las " por ', cosa que lei un dia y siempre me ha funcionado.

envio el email:

$mail->MsgHTML($body);
$mail->AddAddress($emailenvio,$emailenvio);
$mail->Send();

y el script me da el siguiente error:

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in line 138, y en esa linea del HTML tengo el siguiente codigo:

<?
while ($row = mysql_fetch_array($resultados)){
$idnoticia=$row['idnoticia'];
.....


donde esta el error? que hago mal?

saludos
  #6 (permalink)  
Antiguo 23/03/2009, 10:47
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ayuda con phpMailer

Cita:
Iniciado por ferranWEB Ver Mensaje
[...] donde esta el error? que hago mal? [...]
sin ver el código completo es difícil adivinarlo ....

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 23/03/2009, 10:48
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
Respuesta: ayuda con phpMailer

creo que el problema esta con las etiquetas php... tal que asi:

<?echo $row['titulo_noticia'];?>

pero como lo hago entonces?
  #8 (permalink)  
Antiguo 23/03/2009, 10:52
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ayuda con phpMailer

Cita:
Iniciado por ferranWEB Ver Mensaje
[...] pero como lo hago entonces?
sigo sin entener lo que pretendes, puedes poner un ejemplo de que quieres hacer??

ya que si no me equivoco, estas tratando de concatenar PHP con cadenas....

esto es un buen ejemplo
Código PHP:
$foo ='bar';

while (
/* ... */)
{
  
$foo .= ' ... ';
}

$foo .= ' .. '
¿que es lo que planeas??
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 23/03/2009, 10:59
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: ayuda con phpMailer

A mi entender recoges la noticia desde la base de dato, esta en formato HTML, y al ponerla ¿te da errores con las comillas? ...

addslashes();

No se que haces, pero si concatenaras correctamente, no deberia dar error ALGUNO.
  #10 (permalink)  
Antiguo 23/03/2009, 11:03
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
buenas paketetrueke,

te resumo lo que busco. tengo un php que muestra en una tabla, un listado con todas las noticias generadas en mi web durante la semana. este script es noticias_semana.html, y si lo ejecuto me sale la tabla, con mi logo, y con las noticias.

que quiero hacer? o que hacia hasta ahora? mandaba por $POST una variable, que era el nombre de la pagina html (noticias_semana.html), y hacia algo asi co headers y la funciona mail:

$tema=$HTTP_GET_VARS ["tema"];

function mostrar_html($tema, $variables)
{
$cod = implode("", @file($tema));
ob_start();
extract($variables);
eval('?>'.$cod.'<?');
$temp=ob_get_contents();
ob_end_clean();
return $temp;
}

y


while ($query=mysql_fetch_array($result)){ (mientras hay usuarios en la bd)

$html_personalizado= mostrar_html($tema, $query);

$login=$query['login'];


$mailenviar= mail($login,$asunto, $html_personalizado, $headers);
}

y esto me funcionaba a la perfecccion. pero des del hosting me han comentado que cuando hacia el envio, que el hosting se saturaba (algo de la estructura dejaba la sesion email abierta), y que no era conveniente a nivel de seguridad pasar variables.

leyendo he encontrado la ocpion del phpMailer. y que busco, sin tener que pasarle la variable, adjuntarle en el $body el html noticias_semana.html. para que? para que cada uno en su email reciba el listado...

me he explicado? se me entiende mejor? si no comentarme y hago lo que haga falta

saludos!

alguna sugerencia?

buenas a todos,

sigo sin conseguirlo. el codigo que os he pasado me manda el email, pero me manda todo el codigo del html, es decir, no veo a nivel de diseño solo de codigo. debe de faltar alguna instruccion para que me detecte el email como codigo html.

alguien sabe porque?

saludos,

Última edición por GatorV; 24/03/2009 a las 09:01
  #11 (permalink)  
Antiguo 24/03/2009, 09:00
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: ayuda con phpMailer

Ya habilitaste el html con PHPMailer??
Código php:
Ver original
  1. $mail->isHTML(true);

Saludos.
  #12 (permalink)  
Antiguo 24/03/2009, 10:15
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
Respuesta: ayuda con phpMailer

si gatorV,

lo tengo habilitado, pero no se pq me llega el codigo en el email.

no se que más formas puedo utilizar. de que otra manera puedo enviar dentro de un email un codigo HTML??

saludos!
  #13 (permalink)  
Antiguo 24/03/2009, 11:42
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: ayuda con phpMailer

Pues si ves los tutoriales en la pagina de PHPMailer solamente tienes que definir como true en el método de isHTML y asignarlo, si no te llega es probable que tu server SMTP te este bloqueando eso, revisa si puedes en otro server tu código.

Saludos.
  #14 (permalink)  
Antiguo 24/03/2009, 12:37
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
Respuesta: ayuda con phpMailer

buenas gatorV,

y antetodo gracias por tu paciencia. el problema del html lo tengo con el codigo php. es decir, he probado a meter un html plano y lo veo correctamente.

el php, pq no lo pilla? cuando meto el php es cuando me llega el codigo del email. en principio hago un query de la bd, donde en una tabla muestro todas las noticias de una base de datos.

como puedo hacerlo?

saludos!
  #15 (permalink)  
Antiguo 24/03/2009, 13:02
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ayuda con phpMailer

Cita:
Iniciado por ferranWEB Ver Mensaje
[..] el php, pq no lo pilla? [...]

mmm....

ese es TU problema.... ya que ningún servidor de correo interpreta PHP ...

al menos, no así....


TU debes pre-procesarlo ... ¿como??

Código PHP:
$cuerpo '';

while (
/*  CONSULTA */)
{
  
$cuerpo .= ' valores ';
}

// mail() .... 
el punto, es que debes concatenar el HTML resultante en tu variable del cuerpo....

OJO: si el PHP que intentas "incluir" en tu email no esta procesado solo escupirá el código fuente (como te resulto a ti)

y además, si es PHP invalido... mucho peor (procura usar <?php y no <?)


--
(con razón yo ya decía.... PHPMailer fallando con HTML )
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #16 (permalink)  
Antiguo 25/03/2009, 02:47
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
Respuesta: ayuda con phpMailer

gracias pateketrueke,

algo ya tenemos! jajajaja

te cuento el contenido de my $body. hago algo asi:

Código:
<?php

include("conexion.php");

$sql = "SELECT * FROM noticias WHERE fecha between '2009-03-13' AND '2009-03-19'";
$resultados = mysql_query($sql);

?>
<html>
.......
//tabla HTML
while ($row = mysql_fetch_array($resultados)){

//cargo las filas de la tabla con los resultados. los muestro asi

<?echo $row["provincia"];?>.....
como tendria que procesarlo entonces?

saludos!
  #17 (permalink)  
Antiguo 25/03/2009, 03:02
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: ayuda con phpMailer

con buffers seria lo mejor...

mostrar_resultados.php
Código PHP:
<?php

//tabla HTML
while ($row mysql_fetch_array($resultados)){

//cargo las filas de la tabla con los resultados. los muestro asi
enviar_email.php
Código PHP:
<?php


include("conexion.php");

$sql "SELECT * FROM noticias WHERE fecha between '2009-03-13' AND '2009-03-19'";
$resultados mysql_query($sql);

// ...

ob_start();

include 
'mostrar_resultados.php';

$body ob_get_contents();
ob_end_clean();

// ...
(siempre tuviste la respuesta, o algo así )
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #18 (permalink)  
Antiguo 25/03/2009, 06:36
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
Respuesta: ayuda con phpMailer

hola pateke, he hecho lo que me dices y no me funciona.

es decir, la consulta la hago en el mismo que envia el email, es decir, en el enviar_email.php, y en el archivo include tengo while row.....

en ese caso, me da error

Warning: main(mostrar_ofertas.php) [function.main]: failed to open stream: No such file or directory in

imagino que no encontrara la conexion. y si isnerto la consulta en el mismo php donde tengo el html, me da el siguien error:

Parse error: syntax error, unexpected T_VARIABLE in /home/

que hago mal?

saludos
  #19 (permalink)  
Antiguo 25/03/2009, 09:17
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: ayuda con phpMailer

El primer error es claro, el archivo que intentas incluir no existe.

El segundo error es que tienes un error de sintaxis en tu clase, seguramente no cerraste un ; o algo similar.

Saludos.
  #20 (permalink)  
Antiguo 25/03/2009, 12:10
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
SOLUCIONADOOOO

buenas a todos, problema solucionado, ya mando el correo perfectamente. el problema era en la consulta que hacia, que ponia ... WHERE idempresa='$idempresa', he tenido que quitarle las comillas.

lo unico que me falta por hacer, es que recibo los emails de: Root. como le pongo un email?

saludos y gracias!!

buenas,

ahora me ha surgido un nuevo problema. cuando ejecuto el script voy enviando el html a todos los registrados. hasta aqui, ningun problema. pero si que lo hay, y es que la pagina se caduca antes de que se envien. como guardo los nombres de los contactos y de los emails en un txt, cuando llega a los 100 la pagina caduca y da error.

hay alguna forma de evitar el error, y que la pagina este en ejecución hasta que se acabe el while que recorre todos los usuarios de la bd?

saludos!

Última edición por GatorV; 27/03/2009 a las 11:24
  #21 (permalink)  
Antiguo 27/03/2009, 05:07
Avatar de @ndreX!  
Fecha de Ingreso: abril-2007
Mensajes: 161
Antigüedad: 17 años
Puntos: 4
Respuesta: ayuda con phpMailer

Si la hay, pero debes modificar el php.ini en la linea donde esta "max_execution_time" y ponle 0 (ilimitado) o alguna cantidad en segundos que creas conveniente, si no tienes acceso a php.ini, hay una funcion (aunque no siempre esta disponible)

http://php.net/set_time_limit

Saludos.
__________________
Blog de Andres Ortiz: http://www.axpuntes.com/
  #22 (permalink)  
Antiguo 27/03/2009, 09:00
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 3 meses
Puntos: 3
Respuesta: ayuda con phpMailer

gracias @andrex

probare asi, no tengo acceso al php.ini, probare con el set_time_limit(0);

igualmente, tu sabes de algun metodo para hacer lo que hago ? me da la sensacion de que utilizo una programacion demasiado arcaica.... que opinas tu?

saludos y gracias!!
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 00:42.