Foros del Web » Programando para Internet » PHP »

Php mailer + smtp + destinatarios, ayuda!

Estas en el tema de Php mailer + smtp + destinatarios, ayuda! en el foro de PHP en Foros del Web. Hola buen dia, tengo ya algo de tiempo intentando lograr algo que nunca he visto por ahy para descargar, se trata de enviar un email ...
  #1 (permalink)  
Antiguo 16/12/2009, 23:37
 
Fecha de Ingreso: agosto-2009
Mensajes: 23
Antigüedad: 14 años, 8 meses
Puntos: 1
Sonrisa Php mailer + smtp + destinatarios, ayuda!

Hola buen dia, tengo ya algo de tiempo intentando lograr algo que nunca he visto por ahy para descargar, se trata de enviar un email a varios destinatarios unos 10 o 20, utilizando la clases phpmailer configurada con gmail como servidor smtp.

Tengo conocimientos basico de php, pero aun asi me decidi a intentarlo, y no funciono

La idea es que los destinarios se introduscan en un textarea

Aqui esta mi codigo

Código:
<?php

include("clases/phpmailer/class.phpmailer.php");

$testa = $_POST['veio'];

if($testa != "") {

$handle = fopen ($emails, "r");

$mailist = $_POST['emails'];



$i=0;


$mail = new PHPMailer();

$mail->IsSMTP();
$mail->Host = "ssl://smtp.gmail.com";
$mail->Port = 465;
$mail->SMTPAuth = true;
$mail->Username = "[email protected]";
$mail->Password = "pass";

$mail->From = $_POST['email'];
$mail->FromName = $_POST['nombre'];


while($email[$i]) 

{

$email = explode("\n", $to);

$to = $email[$i];

$to2 = ereg_replace(" ", "", $to);

$correo= $to2;

echo $correo."<br>";

$mail->WordWrap = 50;
$mail->IsHTML(true);

$mail->AddAddress("$correo");
$mail->Subject = $_POST['asunto'];
$mail->Body = $_POST['mensaje'];
$mail->AltBody = "nada";


if(!$mail->Send())
echo "Ocurrio un error al enviar el email a " . $row["email"] . "<br>";

$i++;

$mail->ClearAddresses();

}
}

?>

y aqui dejo el form html


Código:
<form action="cardroot.php" method="post" enctype="multipart/form-data" name="form1">
  <table width="600px" border="0">

  <input type="hidden" name="veio" value="sim">
     <tr>
      <td width="180" align="right"><div align="left"><span class="Estilo13">Nombre</span></div></td>
      <td width="420"><span class="Estilo11">
	        <input name="nombre" type="text" id="nombre">
      </span></td>
    </tr>
    <tr>
      <td><div align="left"><span class="Estilo13">De</span></div></td>
      <td><span class="Estilo11">
        <input name="email" type="text" id="email">
      </span></td>
    </tr>
    <tr>
      <td><div align="left"><span class="Estilo13">Asunto</span></div></td>
      <td><span class="Estilo11">
        <input type="text" id="asunto" name="asunto">
      </span></td>
    </tr>
    <tr>
      <td><div align="left"><span class="Estilo13">Mensaje</span></div></td>
      <td><span class="Estilo11">
        <input type="text" id="mensaje" name="mensaje">
      </span></td>
    </tr>
    <tr>
      <td><div align="left"><span class="Estilo13">Destinatarios</span></div></td>
      <td><span class="Estilo11"></span><span class="Estilo11">
        <textarea name="emails" cols="35" rows="5" id="emails"></textarea>
      </span></td>
    </tr>
    <tr>
      <td><span class="Estilo14"></span></td>
      <td><span class="Estilo11">
        <label>
        <input type="submit" name="Submit" value="Enviar">
        </label>
      </span></td>
    </tr>
  </table></form>

Bueno la idea es todos aporten sus ideas y conocimientos para ver si podemos lograr andar este script, y asi se puede publicar para que otros usuarios que necesiten (son muchos) este mismo script
  #2 (permalink)  
Antiguo 17/12/2009, 07:39
5xc
 
Fecha de Ingreso: septiembre-2009
Mensajes: 19
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Php mailer + smtp + destinatarios, ayuda!

A ver, yo tengo algún ejemplo por ahí hecho, aunque no con un textarea sino seleccionando las direcciones de una base de datos, pero bueno, he retocado cosas para que esté hecho como lo tienes tú.


if ($_POST['emails']==""){
echo "No has seleccionado ningún usuario";
}else{
//Sacamos lista de los usuarios
$lista=explode('\n',$_POST['emails']);
$num = count($lista);

/* ************************************************** ***** */
/* ****************** CÓDIGO ***************************** */
/* ****************** PHPMAILER ************************** */
/* ************************************************** *** */

require "phpmailer/class.phpmailer.php";
$mail = new phpmailer();

//Con PluginDir le indicamos a la clase phpmailer donde se
//encuentra la clase smtp
$mail->PluginDir = "phpmailer/";

//Con la propiedad Mailer le indicamos que vamos a usar un servidor smtp
$mail->Mailer = "smtp";

//Asignamos a Host el nombre de nuestro servidor smtp
$mail->Host = "stmp.nombredominio.com";

//Le decimos cual es nuestro nombre de usuario y password
$mail->Username = "[email protected]";
$mail->Password = "password";

//Indicamos cual es nuestra dirección de correo y el nombre que
//queremos que vea el usuario que lee nuestro correo
$mail->From = "[email protected]";
$mail->FromName = "Nombre";

$mail->Timeout=10; //30 si es un servidor gratuito

//Envío
$i = 0;
while ($i<=$num){
$mail->Subject = "Mensaje";
$body = "texto del correo..";
//Definimos AltBody por si el destinatario del correo no admite email con formato html
$mail->AltBody = 'texto sin formato';

//Indicamos cual es la dirección de destino del correo
$direccion=$lista[$i];
$mail->AddAddress($direccion);

//se envia el mensaje, si no ha habido problemas
//la variable $exito tendra el valor true

$exito = $mail->Send();

//La clase phpmailer tiene un pequeño bug y es que cuando envia un mail con
//attachment la variable ErrorInfo adquiere el valor Data not accepted, dicho
//valor no debe confundirnos ya que el mensaje ha sido enviado correctamente

if ($mail->ErrorInfo=="SMTP Error: Data not accepted") {
$exito=true;
}

//Si el mensaje no ha podido ser enviado se realizaran 4 intentos mas como mucho
//para intentar enviar el mensaje, cada intento se hara 5 segundos despues
//del anterior, para ello se usa la funcion sleep
$intentos=1;

while ((!$exito) && ($intentos < 3)) {
sleep(5);
$exito = $mail->Send();
$intentos=$intentos+1;

}// FIN while ((!$exito) && ($intentos < 5))

if(!$exito) {
echo "Problemas enviando correo electr&oacute;nico a " .$lista['$i']. "<br />";
echo $mail->ErrorInfo."<br />";
}else{
echo "Mensaje enviado correctamente a " .$lista['$i']."<br />";
}

// Borro la direccion de destino establecida anteriormente
$mail->ClearAddresses();

$i++;
}// fin while envío
/*************** FIN PHPMAILER ********************/
}//FIN if ($_POST['emails']== "")



Obviamente puede haber algún error ya que he modificado cosas sin testearlo nuevamente.

Última edición por 5xc; 17/12/2009 a las 15:59
  #3 (permalink)  
Antiguo 17/12/2009, 11:40
 
Fecha de Ingreso: agosto-2009
Mensajes: 23
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: Php mailer + smtp + destinatarios, ayuda!

hola 5xc, gracias por responder y ademas de eso publicar tu codigo, voy a probarlo y en caso de que tenga un error lo intentare reparar o sino lo posteo para que otros users con mas experiencia que yo puedan seguir ayudando.
  #4 (permalink)  
Antiguo 17/12/2009, 14:38
 
Fecha de Ingreso: agosto-2009
Mensajes: 23
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: Php mailer + smtp + destinatarios, ayuda!

Estaba probando el codigo y me di cuenta de que faltaba algo muy importante:

poner los destinatarios en phpmailer

Código:
$mail->AddAddress($to);
tambien falto remplazar los saltos de lineas de la lista de emails por comas (,) para que qude asi: [email protected], [email protected]..... que ese es el formato con que envia la clase phpmailer..

intente hacer esto y nuevamente no sirvio

Código:
$i=0;
$all = $lista[$x]; 
$to = ereg_replace(" ", "", $all);

while ($i<=$num){

$mail->Subject = "Mensaje";

$mail->AddAddress($to);
  #5 (permalink)  
Antiguo 17/12/2009, 15:57
5xc
 
Fecha de Ingreso: septiembre-2009
Mensajes: 19
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Php mailer + smtp + destinatarios, ayuda!

Sí, se me olvidó el AddAddress.

Lo otro no entiendo, con el explode ya tienes las direcciones en un array. Cada vez que entre al bucle debe enviar el correo a cada uno.

Edité el mensaje anterior con lo que faltaba
  #6 (permalink)  
Antiguo 18/12/2009, 12:40
 
Fecha de Ingreso: agosto-2009
Mensajes: 23
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: Php mailer + smtp + destinatarios, ayuda!

Amigo he probado el cosigo y no logro hacerlo funcionar, podrias por favor probarlo tu y me dices si te funciona?
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:56.