Foros del Web » Programando para Internet » PHP »

Email masivo y adjuntos con PHPMailer

Estas en el tema de Email masivo y adjuntos con PHPMailer en el foro de PHP en Foros del Web. Hola, Llevo un par de dias sin poder dar solucion a un problema, que estoy convencido que muchos de vosotros solucionais con los ojos cerrados. ...
  #1 (permalink)  
Antiguo 30/04/2010, 05:46
Avatar de carscx  
Fecha de Ingreso: noviembre-2008
Mensajes: 227
Antigüedad: 15 años, 5 meses
Puntos: 10
Pregunta Email masivo y adjuntos con PHPMailer

Hola,

Llevo un par de dias sin poder dar solucion a un problema, que estoy convencido que muchos de vosotros solucionais con los ojos cerrados. El caso es que quiero enviar un boletin con un archivo adjunto para adjuntar el archivo he visto que se puede hacer con PHPMailer, y el envio masivo tambien. Pero no consigo que funcione.

Tengo un sistema de boletines, bastante antiguo pero funcional. En el que la gente se puede suscribir y luego una parte de administracion desde la cual se envian los emails. El problema viene cuando al seleccionar el grupo al que se quiere enviar. Directamente no lo manda.

Os pongo el codigo, a ver si podeis echarme un cable. Gracias.
Código PHP:
<?php
require("class/class.phpmailer.php");
include(
"connect.php");
$msg "";
if (
$_POST['action'] == "send") {
    
$varname $_FILES['archivo']['name'];
    
$vartemp $_FILES['archivo']['tmp_name'];
    
    
$mail = new PHPMailer();
    
$mail->Host "localhost";
    
$mail->From "[email protected]";
    
$mail->FromName "Boletines";
    
$mail->Subject $_POST['asunto'];
    
$mail->AddAddress($selectmails3[address]);
    if (
$varname != "") {
        
$mail->AddAttachment($vartemp$varname);
    }
    
$body "<strong>Mensaje</strong><br><br>".$_POST['mensaje']."<br>";
    
$body.= "<i>Enviado por http://blog.unijimpe.net</i>";
    
$mail->Body $body;
    
$mail->IsHTML(true);
    
$mail->Send();
    
$msg "Mensaje enviado correctamente";
}
?>
<? 
include ("head.php"); ?>
<script language="JavaScript" type="text/javascript" src="wysiwyg.js"></script> 
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td align="center" class="descdet">
    <div class="borde">
    <strong class="subder">Env&iacute;ar Email con Adjuntos</strong><br>
    Ingresar los datos en el formulario. <br>
    <?php if ($msg != "") { ?><span class="conf"><?php echo $msg?></span><br><?php ?>
    <form action="enviamail.php" method="post" enctype="multipart/form-data">
      <p>      Destinatario<br>
      <?echo "<select name='lists'>";
      
$getlists="SELECT * from m_newsletters";
      
$getlists2=mysql_query($getlists) or die("Could not get lists");
      echo 
"<option value='0'>Todos</option>";
      while(
$getlists3=mysql_fetch_array($getlists2))
      {
         echo 
"<option value='$getlists3[newsletterid]'>$getlists3[newslettername]</option>";
      }
      echo 
"</select>"?>
      Asunto<br>
      <input type="text" name="asunto" size="50">
      Adjunto<br>
      <input type="file" name="archivo"  size="32">
      Mensaje<br>
      <!--<textarea name="mensaje" cols="47" rows="8" wrap="virtual" id="mensaje"></textarea>-->
      <textarea name='nletter' rows='8' cols='60' id='7'></textarea><br>
      <script language="JavaScript">
      generate_wysiwyg('7')
      </script>
      <input type="submit" name="btsend" class="boton" value="Enviar Email">
      <input type="hidden" name="action" value="send" />
      </p>
    </form>
    </div>
    </td>
  </tr>
</table>
</body>
</html>
__________________
Frontend Developer
JS+HTML5+CSS3
Backend Developer
PHP+MySQL
  #2 (permalink)  
Antiguo 30/04/2010, 05:52
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años
Puntos: 40
Respuesta: Email masivo y adjuntos con PHPMailer

No veo de donde sale la variable $selectmails3[address].
¿Puedes ponernos el código donde especificas su valor?

Un saludo
  #3 (permalink)  
Antiguo 30/04/2010, 05:54
Avatar de carscx  
Fecha de Ingreso: noviembre-2008
Mensajes: 227
Antigüedad: 15 años, 5 meses
Puntos: 10
Respuesta: Email masivo y adjuntos con PHPMailer

Gracias por contestar,

Las direcciones se guardan en la bd y por grupos, al enviar el mensaje se muestra el desplegable con los grupos, para seleccionar a que grupo quieres enviar el boletin.
con el siguiente select
Código PHP:
<?echo "<select name='lists'>";
      
$getlists="SELECT * from m_newsletters";
      
$getlists2=mysql_query($getlists) or die("Could not get lists");
      echo 
"<option value='0'>Todos</option>";
      while(
$getlists3=mysql_fetch_array($getlists2))
      {
         echo 
"<option value='$getlists3[newsletterid]'>$getlists3[newslettername]</option>";
      }
      echo 
"</select>"?>
__________________
Frontend Developer
JS+HTML5+CSS3
Backend Developer
PHP+MySQL
  #4 (permalink)  
Antiguo 30/04/2010, 05:56
Avatar de carscx  
Fecha de Ingreso: noviembre-2008
Mensajes: 227
Antigüedad: 15 años, 5 meses
Puntos: 10
Respuesta: Email masivo y adjuntos con PHPMailer

Este el codigo original, el cual envia emails (boletines) a los grupos de usuarios, pero cuando le he querido meter la clase phpmailer y poder adjuntar archivos, no funciona. por si os sirve de ayuda.
Código PHP:
<?php
session_start
();
include 
"connect.php";
include 
"../head.php";
?>
<script language="JavaScript" type="text/javascript" src="wysiwyg.js"></script> 
<center><table border='0'><tr><td valign='top' width=30%>
<?php
if(isset($_SESSION['mailadmin']))
{
   include 
"left.php";
   echo 
"</td>";
   echo 
"<td valign='top' width=70%>";
   echo 
"<table class='maintable'><tr class='headline'><td><center>Send Newsletter</center></td></tr>";
   echo 
"<tr class='mainrow'><td>";
   if(isset(
$_POST['submit']))
   {
      
$nletter=$_POST['nletter'];
      
$subject=$_POST['subject'];
      
$nletter=stripslashes($nletter);
      
$subject=stripslashes($subject);
      
$lists=$_POST['lists'];
      
$nletter=str_replace("rn","<br>",$nletter);
      if(
$lists==0)
      {
        
$selectmails="SELECT * from m_list where validated='1' and mailed='0'";
      }
      else
      {
        
$selectmails="SELECT * from m_list where validated='1' and mailed='0' and listid='$lists'";
       }
      
$selectmails2=mysql_query($selectmails) or die("Could not select mails");
      while(
$selectmails3=mysql_fetch_array($selectmails2))
      {
         
$headers "From: $yourmail \r\n"
         
$headers.= "Content-Type: text/html; charset=ISO-8859-1 "
         
$headers .= "MIME-Version: 1.0 ";
         
mail("$selectmails3[address]","$subject","$nletter<br><br><br>)",$headers);
         
$setassend="update m_list set mailed='1' where mailid='$selectmails3[mailid]'";
         
mysql_query($setassend) or die("COuld not set as send");
      }
      echo 
"Newsletter Sent";
   }
   else
   {
      echo 
"<form action='sendletter.php' method='post'>";
      echo 
"Asunto:<br>";
      echo 
"<input type='text' name='subject' size='20'><br>";
      echo 
"Archivo:<br>";
      echo 
"<input type='file' name='file'><br>";
      echo 
"List to send to:<br>";
      echo 
"<select name='lists'>";
      
$getlists="SELECT * from m_newsletters";
      
$getlists2=mysql_query($getlists) or die("Could not get lists");
      echo 
"<option value='0'>All</option>";
      while(
$getlists3=mysql_fetch_array($getlists2))
      {
         echo 
"<option value='$getlists3[newsletterid]'>$getlists3[newslettername]</option>";
      }
      echo 
"</select><br>";  
      echo 
"Letter to send:<br>";
      echo 
"<textarea name='nletter' rows='8' cols='60' id='7'></textarea><br>";
      echo 
'<script language="JavaScript">';
      echo 
"generate_wysiwyg('7')";
      echo 
"</script>";
      echo 
"<input type='submit' name='submit' value='submit'></form>";

   }
   echo 
"</td></tr></table>";
}
?>
__________________
Frontend Developer
JS+HTML5+CSS3
Backend Developer
PHP+MySQL
  #5 (permalink)  
Antiguo 30/04/2010, 06:02
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años
Puntos: 40
Respuesta: Email masivo y adjuntos con PHPMailer

Si te fijas, en el código original, hay un while, el cual procesara todos los correos que haya en la base de datos e irá enviando uno por uno hasta haber enviado todos, eso es correcto, pero no veo ese mismo bucle que procesa los correos uno por uno en el código con phpMailer, no creo que el contenido de la variable que pones $mail->AddAddress($selectmails3[address]); aqui tenga el valor de un correo electronico, revisa el valor de $selectmails3.

Un saludo
  #6 (permalink)  
Antiguo 30/04/2010, 06:08
Avatar de carscx  
Fecha de Ingreso: noviembre-2008
Mensajes: 227
Antigüedad: 15 años, 5 meses
Puntos: 10
Respuesta: Email masivo y adjuntos con PHPMailer

Entonces deberia poner ese mismo while en el codigo con phpMailer, perdona mi ignorancia pero es que hace relativamente poco que uso PHP y no tengo mucha idea. Gracias
__________________
Frontend Developer
JS+HTML5+CSS3
Backend Developer
PHP+MySQL
  #7 (permalink)  
Antiguo 30/04/2010, 07:32
Avatar de Heli0s  
Fecha de Ingreso: abril-2010
Mensajes: 789
Antigüedad: 14 años
Puntos: 40
Respuesta: Email masivo y adjuntos con PHPMailer

Sí, debes crear un while similar que añada los correos a la lista para enviar mediante AddAddress.

Un saludo

Etiquetas: adjuntos, email, masivo, phpmailer
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.
Tema Cerrado

SíEste tema le ha gustado a 2 personas




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