PHP - enviar correos masivos

 
Vista:
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

enviar correos masivos

Publicado por zendi (1058 intervenciones) el 20/01/2015 13:29:21
Que tal a todos sabe alguien como enviar correos masivos?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

enviar correos masivos

Publicado por zendi (1058 intervenciones) el 20/01/2015 18:30:57
Que tal Xavi, gracias muy bien pero yo ya tengo la clase phpmailer, pero me baso en este codigo que estoy desarrollando:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
<?php
$connect = pg_connect("host=localhost port=5432 dbname=pediatria user=postgres password=movilnet");
 
require("PHPMailer-master/class.phpmailer.php");
require("PHPMailer-master/class.smtp.php");
error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);
 
$de = $_POST["de_txt"];
$para = $_POST["para_txt"];
 
if ($para)
{
$correos = "SELECT cta_correo FROM propietarios";
 
$tipo_gasto = @pg_query($connect,$correos);
while($select3 = @pg_fetch_array($tipo_gasto))
		  {
			$cCodigo = $select3['cta_correo'];
            echo "<OPTION VALUE='$cCodigo'>$cCodigo</OPTION>";
          }
 
 
 
 
$asunto = $_POST["asunto_txt"];
$archivo = $_FILES["archivo_fls"]["tmp_name"];
echo $destino = $_SERVER['DOCUMENT_ROOT']."/".$_FILES["archivo_fls"]["name"];
echo $_SERVER['DOCUMENT_ROOT'];
$mensaje = $_POST["mensaje_txa"];
if(move_uploaded_file($archivo,$destino)) {
	$smtp=new PHPMailer();
	# Indicamos que vamos a utilizar un servidor SMTP 
	$smtp->IsSMTP();
	# Definimos el formato del correo con UTF-8 
	$smtp->CharSet="UTF-8";
//	$smtp->SMTPDebug = 1; 
	# autenticación contra nuestro servidor smtp 
	$smtp->SMTPAuth = true; // enable SMTP authentication
	$smtp->SMTPSecure = "tls";
	$smtp->Host = "smtp.live.com";
	// sets MAIL as the SMTP server 
	$smtp->Username = "alecuello84@hotmail.com";
	// MAIL username
	$smtp->Password = "*********";
	// MAIL password 
	$smtp->Port = 587;
	# datos de quien realiza el envio 
	$smtp->From = "alecuello84@hotmail.com";
	// from mail 
	$smtp->FromName = "Alejon";
	// from mail name # Indicamos la dirección donde enviar el mensaje 
	$para=$cCodigo;
	$nameTo="Raul";
	$smtp->AddAddress($cCodigo,$nameTo);
	$smtp->Subject = "asunto";
	$smtp->Body = "mensaje";
	$smtp->WordWrap = 50;
	$smtp->Timeout=30;
	$smtp->IsHTML(true);
	$smtp->MsgHTML("mensaje");
	$smtp->AddAttachment($destino, $_FILES["archivo_fls"]["name"]);
   if (!$smtp->Send()) {
      $respuesta ="El mensaje no se pudo enviar";
      $respuesta .="Error: " .$mail->ErrorInfo;
	  }
	  else
	  {
	  $respuesta ="El mensaje ha sido enviado";
	  }
	  }
	  elseif($_POST)
	  {
	  $respuesta = "Ocurrio un error";
	  }
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <style>
  form { margin: 1em auto; text-align: center; }
   span{ color: #F60; font-size: 1.5 em; } 
   </style>
</head>
<body> <b>
<?php echo $respuesta;?>
</b>
<form name="mail_frm" method="post" enctype="multipart/form-data" action="<?php echo $_SERVER["PHP_SELF"]?>">
De:<input type="text" name="de_txt" /> <br/> <br/>
 
 
<!--Para:<input type="text" name="para_txt" /> <br/> <br/> 
-->
     Para: <select name="para_txt"><option value="0">[Seleccione una cuenta de correo]</option> <br/> <br/>
 
<?php
$connect = pg_connect("host=localhost port=5432 dbname=administra user=postgres password=movilnet");
$correos = "SELECT * FROM propietarios ORDER BY cta_correo";
 
$correos = @pg_query($connect,$correos);
while($select2 = @pg_fetch_array($correos)){
			$codigo = $select2['codigo'];
            $descrip = $select2['cta_correo'];
            echo "<OPTION VALUE='$descrip'>$descrip</OPTION>";
          }
?>
        </select> <br/> <br/>
 
 
Asunto:<input type="text" name="asunto_txt" /> <br/> <br/>
Adjuntar Archivo: <input type="file" name="archivo_fls" /> <br/> <br/>
Mensaje:<br /><textarea name= "mensaje_txa"/> </textarea> <br/> <br/>
  <input type="submit" name="enviar_btn" value="Enviar"/><br/>
  </form>
</body>
</html>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

enviar correos masivos

Publicado por xve (6935 intervenciones) el 20/01/2015 20:24:16
Hola Zendi, esta linea dentro del bucle while(), creo que esta mal...
1
$cCodigo = $select3['cta_correo'];

Siempre tendrá el ultimo correo del bucle... y luego utilizas esa misma variable pera definir a quien se envía el correo...
1
$para=$cCodigo;
por lo que unicamente se enviaria al ultimo usuario si hubiera varios.


Esta el código bastante liado y cuesta de seguir, ya que no esta bien tabulado...


Revisa el código que te ha dejado Xavi, esta súper claro... ahí veras como lo hace.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

enviar correos masivos

Publicado por zendi (1058 intervenciones) el 20/01/2015 22:05:50
hola Xve, pero parece que este codigo es para enviar para una sola cuenta de correo y ya tengo ese codigo.
Te pregunto: para este codigo de Xavi donde exactamente enviaria para correos masivos? yo tengo el codigo que tu me enviaste y que funciona para uno solo.
De todos modos mirare el codigo de xavi.
este es el codigo de xavi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<?php
/**
 * Envio de correo mediante un servidor SMTP
 */
 
include("phpmailer.php");
 
$smtp=new PHPMailer();
 
# Indicamos que vamos a utilizar un servidor SMTP
$smtp->IsSMTP();
 
# Definimos el formato del correo con UTF-8
$smtp->CharSet="UTF-8";
 
# autenticación contra nuestro servidor smtp
$smtp->SMTPAuth   = true;						// enable SMTP authentication
$smtp->Host       = "miservidor.com";			// sets MAIL as the SMTP server
$smtp->Username   = "nombre@miservidor.com";	// MAIL username
$smtp->Password   = "passwordDelCorreo";			// MAIL password
 
# datos de quien realiza el envio
$smtp->From       = "correoQueEnviaElMensaje@miservidor.com"; // from mail
$smtp->FromName   = "Nombre persona que envia el correo"; // from mail name
 
# Indicamos la dirección donde enviar el mensaje
$mailTo="correoDondeSeEnviaElMensaje@miservidor.info";
$nameTo="Nombre persona que recibe el correo";
 
# establecemos un limite de caracteres de anchura
$smtp->WordWrap   = 50; // set word wrap
 
# NOTA: Los correos es conveniente enviarlos en formato HTML y Texto para que
# cualquier programa de correo pueda leerlo.
 
# Definimos el contenido HTML del correo
$contenidoHTML="<head>";
$contenidoHTML.="<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">";
$contenidoHTML.="</head><body>";
$contenidoHTML.="<b>Contenido en formato HTML</b>";
$contenidoHTML.="<p><a href='http://www.lawebdelprogramador.com'>http://www.lawebdelprogramador.com</a></p>";
$contenidoHTML.="</body>\n";
 
# Definimos el contenido en formato Texto del correo
$contenidoTexto="Contenido en formato Texto";
$contenidoTexto.="\n\nhttp://www.lawebdelprogramador.com";
 
# Definimos el subject
$smtp->Subject="Envio de prueba utilizando un servidor SMTP";
 
# Adjuntamos el archivo "leameLWP.txt" al correo.
# Obtenemos la ruta absoluta de donde se ejecuta este script para encontrar el
# archivo leameLWP.txt para adjuntar. Por ejemplo, si estamos ejecutando nuestro
# script en: /home/xve/test/sendMail.php, nos interesa obtener unicamente:
# /home/xve/test para posteriormente adjuntar el archivo leameLWP.txt, quedando
# /home/xve/test/leameLWP.txt
$rutaAbsoluta=substr($_SERVER["SCRIPT_FILENAME"],0,strrpos($_SERVER["SCRIPT_FILENAME"],"/"));
$smtp->AddAttachment($rutaAbsoluta."/leameLWP.txt", "LeameLWP.txt");
 
# Indicamos el contenido
$smtp->AltBody=$contenidoTexto; //Text Body
$smtp->MsgHTML($contenidoHTML); //Text body HTML
 
$smtp->AddAddress($mailTo,$nameTo);
 
if(!$smtp->Send())
{
	echo "Error: ".$smtp->ErrorInfo;
}else{
	echo "Envio realizado";
}
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

enviar correos masivos

Publicado por xve (6935 intervenciones) el 21/01/2015 07:50:23
Perdona Zendi, no me refería a este código, ya que es para enviar a una sola persona, me refería al que publico ayer, que es para enviar a varias personas: Versión 4 - Permite enviar el mismo correo a varios usuarios

Ahí, crea un bucle que pasa por todos los correos que hay en un array... ese array puede ser de texto, o de una consulta a la base de datos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

enviar correos masivos

Publicado por zendi (1058 intervenciones) el 21/01/2015 20:21:41
Hola Xve, en realidad el anterior no poseía el bucle, este si lo tiene; lo voy a mirar y analizar. A Cualquier duda te escribire
Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

enviar correos masivos

Publicado por zendi (1058 intervenciones) el 21/01/2015 21:04:23
Hola Xve, bueno estuve analizando y luego adapte el codigo de acuerdo al arreglo que traigo de la base de datos que contiene las cuentas de correos y los nombres;

este es el codigo en el cual comente y estan negritas el array, el cual suplanté con el query:

1
$mailTo = "SELECT nombres,cta_correo FROM propietarios";
y el foreach lo reemplacé con el:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
while($select3 = @pg_fetch_array($mailTo))
{
		  	$name = $select3['nombres'];
			$mail = $select3['cta_correo'];
 
            $smtp->ClearAllRecipients();
            $smtp->AddAddress($mail,$name);
 
             if(!$smtp->Send())
             {
                 echo "<br>Error (".$mail."): ".$smtp->ErrorInfo;
             }else{
                 echo "<br>Envio realizado a ".$name." (".$mail.")";
             }



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<?php
/**
 * Envio de correo mediante un servidor SMTP
 */
 
include("phpmailer.php");
error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);
 
$smtp=new PHPMailer();
 
# Indicamos que vamos a utilizar un servidor SMTP
$smtp->IsSMTP();
 
# Definimos el formato del correo con UTF-8
$smtp->CharSet="UTF-8";
 
# autenticación contra nuestro servidor smtp
$smtp->SMTPAuth   = true;						// enable SMTP authentication
$smtp->Host       = "miservidor.com";			// sets MAIL as the SMTP server
$smtp->Username   = "nombre@miservidor.com";	// MAIL username
$smtp->Password   = "passwordDelCorreo";			// MAIL password
 
# datos de quien realiza el envio
$smtp->From       = "correoQueEnviaElMensaje@miservidor.com"; // from mail
$smtp->FromName   = "Nombre persona que envia el correo"; // from mail name
 
# Indicamos las direcciones donde enviar el mensaje con el formato
#   "correo"=>"nombre usuario"
# Se pueden poner tantos correos como se deseen
/*$mailTo=array(
    "correo_1_DondeSeEnviaElMensaje@servidor.info"=>"Nombre_1 persona que recibe el correo",
    "correo_2_DondeSeEnviaElMensaje@servidor.info"=>"Nombre_2 persona que recibe el correo",
    "correo_3_DondeSeEnviaElMensaje@servidor.info"=>"Nombre_3 persona que recibe el correo"
);
*/
 
# establecemos un limite de caracteres de anchura
$smtp->WordWrap   = 50; // set word wrap
 
# NOTA: Los correos es conveniente enviarlos en formato HTML y Texto para que
# cualquier programa de correo pueda leerlo.
 
# Definimos el contenido HTML del correo
$contenidoHTML="<head>";
$contenidoHTML.="<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">";
$contenidoHTML.="</head><body>";
$contenidoHTML.="<b>Contenido en formato HTML</b>";
$contenidoHTML.="<p><a href='http://www.lawebdelprogramador.com'>http://www.lawebdelprogramador.com</a></p>";
$contenidoHTML.="</body>\n";
 
# Definimos el contenido en formato Texto del correo
$contenidoTexto="Contenido en formato Texto";
$contenidoTexto.="\n\nhttp://www.lawebdelprogramador.com";
 
# Definimos el subject
$smtp->Subject="Envio de prueba utilizando un servidor SMTP";
 
# Adjuntamos el archivo "leameLWP.txt" al correo.
# Obtenemos la ruta absoluta de donde se ejecuta este script para encontrar el
# archivo leameLWP.txt para adjuntar. Por ejemplo, si estamos ejecutando nuestro
# script en: /home/xve/test/sendMail.php, nos interesa obtener unicamente:
# /home/xve/test para posteriormente adjuntar el archivo leameLWP.txt, quedando
# /home/xve/test/leameLWP.txt
$rutaAbsoluta=substr($_SERVER["SCRIPT_FILENAME"],0,strrpos($_SERVER["SCRIPT_FILENAME"],"/"));
$smtp->AddAttachment($rutaAbsoluta."/leameLWP.txt", "LeameLWP.txt");
 
# Indicamos el contenido
$smtp->AltBody=$contenidoTexto; //Text Body
$smtp->MsgHTML($contenidoHTML); //Text body HTML
 
/*se hace la conexion a la base de datos*/
$connect = pg_connect("host=localhost port=5432 dbname=administra user=postgres password=movilnet");
/*creo el array o query que debe traer tanto el nombre como la cuenta de correos*/
$mailTo = "SELECT nombres,cta_correo FROM propietarios";
$mailTo = @pg_query($connect,$mailTo);
while($select3 = @pg_fetch_array($mailTo))
{
		  	$name = $select3['nombres'];
			$mail = $select3['cta_correo'];
 
            $smtp->ClearAllRecipients();
            $smtp->AddAddress($mail,$name);
 
             if(!$smtp->Send())
             {
                 echo "<br>Error (".$mail."): ".$smtp->ErrorInfo;
             }else{
                 echo "<br>Envio realizado a ".$name." (".$mail.")";
             }
 
 
}
 
/*foreach($mailTo as $mail=>$name)
{
    $smtp->ClearAllRecipients();
    $smtp->AddAddress($mail,$name);

    if(!$smtp->Send())
    {
        echo "<br>Error (".$mail."): ".$smtp->ErrorInfo;
    }else{
        echo "<br>Envio realizado a ".$name." (".$mail.")";
    }
}
*/?>
lo puse a funcionar y me arroja estos errores:
1
2
3
4
5
6
7
8
9
10
11
12
13
Deprecated: Function set_magic_quotes_runtime() is deprecated in C:\xampp\htdocs\prueba\tesis1\phpmailer.php on line 1471
 
Deprecated: Function set_magic_quotes_runtime() is deprecated in C:\xampp\htdocs\prueba\tesis1\phpmailer.php on line 1475
 
Error (alecuello84@hotmail.com): SMTP Error: Could not connect to SMTP host.
Deprecated: Function set_magic_quotes_runtime() is deprecated in C:\xampp\htdocs\prueba\tesis1\phpmailer.php on line 1471
 
Deprecated: Function set_magic_quotes_runtime() is deprecated in C:\xampp\htdocs\prueba\tesis1\phpmailer.php on line 1475
 
Error (andresmen2004@hotmail.com): SMTP Error: Could not connect to SMTP host.
Deprecated: Function set_magic_quotes_runtime() is deprecated in C:\xampp\htdocs\prueba\tesis1\phpmailer.php on line 1471
 
Deprecated: Function set_magic_quotes_runtime() is deprecated in C:\xampp\htdocs\prueba\tesis1\phpmailer.php on line 1475
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

enviar correos masivos

Publicado por zendi (1058 intervenciones) el 22/01/2015 02:21:59
Hola Xve, bueno ya adapte el codigo que me envio Xavi, y lo estoy llamando a través de un formulario.

Este es es codigo del formularo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style>
	form {
		margin: 1em auto;
	    text-align: center;
     }
	span{
	  color: #F60;
	  font-size: 1.5 em;
	}
</style>
</head>
 
<body>
<form name="mail_frm" method="post" enctype="multipart/form-data" action="sendMail.php">
  De:<input type="text" name="de_txt" /> <br/> <br/>
<!--  Para:<input type="text" name="para_txt" /> <br/> <br/> 
-->  Asunto:<input type="text" name="asunto_txt" /> <br/> <br/>
  Adjuntar Archivo: <input type="file" name="archivo_fls" /> <br/> <br/>
  Mensaje:<br /><textarea name= "mensaje_txa" rows="12" cols="50"/></textarea> <br/> <br/>
 
  <input type="submit" name="enviar_btn" value="Enviar"/><br/>
  <?php
  error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);
	if(isset($_GET["respuesta"])){
	   echo "<span>".$_GET["respuesta"] ."</span>";
 
	}
 
  ?>
 
</form>
</body>
</html>


este es el codigo para enviar el correo a las diferentes cuentas de correo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<?php
/**
 * Envio de correo mediante un servidor SMTP
 */
require("PHPMailer-master/class.phpmailer.php");
require("PHPMailer-master/class.smtp.php");
 
//include("phpmailer.php");
error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);
$de = $_POST["de_txt"];
$para = $_POST["para_txt"];
$asunto = $_POST["asunto_txt"];
$archivo = $_FILES["archivo_fls"]["tmp_name"];
$destino = $_SERVER['DOCUMENT_ROOT']."/".$_FILES["archivo_fls"]["name"];
 
$smtp=new PHPMailer();
 
# Indicamos que vamos a utilizar un servidor SMTP
$smtp->IsSMTP();
 
# Definimos el formato del correo con UTF-8
$smtp->CharSet="UTF-8";
 
# autenticación contra nuestro servidor smtp
$smtp->SMTPAuth   = true;						// enable SMTP authentication
	$smtp->Host = "smtp.live.com";
	// sets MAIL as the SMTP server 
	$smtp->Username = "andresmen2004@hotmail.com";
	// MAIL username
	$smtp->Password = "******";
 
# datos de quien realiza el envio
$smtp->From       = "andresmen2004@hotmail.com"; // from mail
$smtp->FromName   = "Andres"; // from mail name
 
# Indicamos las direcciones donde enviar el mensaje con el formato
#   "correo"=>"nombre usuario"
# Se pueden poner tantos correos como se deseen
/*$mailTo=array(
    "correo_1_DondeSeEnviaElMensaje@servidor.info"=>"Nombre_1 persona que recibe el correo",
    "correo_2_DondeSeEnviaElMensaje@servidor.info"=>"Nombre_2 persona que recibe el correo",
    "correo_3_DondeSeEnviaElMensaje@servidor.info"=>"Nombre_3 persona que recibe el correo"
);
*/
# establecemos un limite de caracteres de anchura
$smtp->WordWrap   = 50; // set word wrap
# NOTA: Los correos es conveniente enviarlos en formato HTML y Texto para que
# cualquier programa de correo pueda leerlo.
# Definimos el contenido HTML del correo
$contenidoHTML="<head>";
$contenidoHTML.="<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">";
$contenidoHTML.="</head><body>";
$contenidoHTML.="<b>Contenido en formato HTML</b>";
$contenidoHTML.="<p><a href='http://www.lawebdelprogramador.com'>http://www.lawebdelprogramador.com</a></p>";
$contenidoHTML.="</body>\n";
 
# Definimos el contenido en formato Texto del correo
$contenidoTexto="Contenido en formato Texto";
$contenidoTexto.="\n\nhttp://www.lawebdelprogramador.com";
 
# Definimos el subject
$smtp->Subject="Envio de prueba utilizando un servidor SMTP";
 
# Adjuntamos el archivo "leameLWP.txt" al correo.
# Obtenemos la ruta absoluta de donde se ejecuta este script para encontrar el
# archivo leameLWP.txt para adjuntar. Por ejemplo, si estamos ejecutando nuestro
# script en: /home/xve/test/sendMail.php, nos interesa obtener unicamente:
# /home/xve/test para posteriormente adjuntar el archivo leameLWP.txt, quedando
# /home/xve/test/leameLWP.txt
# Indicamos el contenido
$smtp->AltBody=$contenidoTexto; //Text Body
$smtp->MsgHTML($contenidoHTML); //Text body HTML
$smtp->AddAttachment($destino, $_FILES["archivo_fls"]["name"]);
 
/*se hace la conexion a la base de datos*/
$connect = pg_connect("host=localhost port=5432 dbname=administra user=postgres password=movilnet");
/*creo el array o query que debe traer tanto el nombre como la cuenta de correos*/
$mailTo = "SELECT nombres,cta_correo FROM propietarios";
$mailTo = @pg_query($connect,$mailTo);
while($select3 = @pg_fetch_array($mailTo))
{
      $name = $select3['nombres'];
	  $mail = $select3['cta_correo'];
      $smtp->ClearAllRecipients();
      $smtp->AddAddress($mail,$name);
             if(!$smtp->Send()){
                 echo "<br>Error (".$mail."): ".$smtp->ErrorInfo;
             }
			 else
			 {
                 echo "<br>Envio realizado a ".$name." (".$mail.")";
             }
}

pero cuando envio los mensajes me arroja este error:
Error ([email protected]): SMTP connect() failed.

esta es la primera cuenta de correo en la base de datos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

enviar correos masivos

Publicado por xve (6935 intervenciones) el 22/01/2015 08:14:29
Ese error es de conexión con el servidor... es el problema que tenias hace tiempo que no se conectaba con el servidor de correo saliente, es decir smtp.live.com... recuerdas como lo solucionaste?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 557
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

enviar correos masivos

Publicado por zendi (1058 intervenciones) el 22/01/2015 18:20:08
Hola Xve, el camino es bastante largo hasta allá, pero recuerdo que tu diste con la solucion; enviaste este codigo:
pero ya lo he modificado con el while adaptandolo a la tabla, y otra cosa ahora me da un error en el elseif es una locura esto vale.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<?php
require("PHPMailer-master/class.phpmailer.php");
require("PHPMailer-master/class.smtp.php");
error_reporting(E_ALL ^ E_WARNING ^ E_NOTICE);
 
$de = $_POST["de_txt"];
$para = $_POST["para_txt"];
$asunto = $_POST["asunto_txt"];
$archivo = $_FILES["archivo_fls"]["tmp_name"];
$destino = $_SERVER['DOCUMENT_ROOT']."/".$_FILES["archivo_fls"]["name"];
//echo $_SERVER['DOCUMENT_ROOT'];
$mensaje = $_POST["mensaje_txa"];
if(move_uploaded_file($archivo,$destino)) {
	$smtp=new PHPMailer();
	# Indicamos que vamos a utilizar un servidor SMTP 
	$smtp->IsSMTP();
	# Definimos el formato del correo con UTF-8 
	$smtp->CharSet="UTF-8";
//	$smtp->SMTPDebug = 1; 
	# autenticación contra nuestro servidor smtp 
	$smtp->SMTPAuth = true; // enable SMTP authentication
	$smtp->SMTPSecure = "tls";
	$smtp->Host = "smtp.live.com";
	// sets MAIL as the SMTP server 
	$smtp->Username = "alecuello84@hotmail.com";
	// MAIL username
	$smtp->Password = "******";
	// MAIL password 
	$smtp->Port = 587;
	# datos de quien realiza el envio 
	$smtp->From = "alecuello84@hotmail.com";
	// from mail 
	$smtp->FromName = "Alejon";
	// from mail name # Indicamos la dirección donde enviar el mensaje 
/*	$para="andresmen2004@hotmail.com";
	$nameTo="Andres";
	$smtp->AddAddress($para,$nameTo); 
*/	$smtp->Subject = "asunto";
	$smtp->Body = "mensaje";
	$smtp->WordWrap = 50;
	$smtp->Timeout=30;
	$smtp->IsHTML(true);
	$smtp->MsgHTML("mensaje");
	$smtp->AddAttachment($destino, $_FILES["archivo_fls"]["name"]);
    $connect = pg_connect("host=localhost port=5432 dbname=administra user=postgres password=movilnet");
/*creo el array o query que debe traer tanto el nombre como la cuenta de correos*/
    $mailTo = "SELECT nombres,cta_correo FROM propietarios";
    $mailTo = @pg_query($connect,$mailTo);
while($select3 = @pg_fetch_array($mailTo))
{
      $name = $select3['nombres'];
	  $mail = $select3['cta_correo'];
      $smtp->ClearAllRecipients();
      $smtp->AddAddress($mail,$name);
   if (!$smtp->Send())
      {
         $respuesta ="El mensaje no se pudo enviar";
         $respuesta .="Error: " .$mail->ErrorInfo;
	  }
	  else
	  {
    	 $respuesta ="El mensaje ha sido enviado";
	  }
 
	  }
	  elseif($_POST)
	  {
    	 $respuesta = "Ocurrio un error";
	  }
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <style>
  form { margin: 1em auto; text-align: center; }
   span{ color: #F60; font-size: 1.5 em; } 
   </style>
</head>
<body> <b>
<?php echo $respuesta;?>
</b>
<form name="mail_frm" method="post" enctype="multipart/form-data" action="<?php echo $_SERVER["PHP_SELF"]?>">
De:<input type="text" name="de_txt" /> <br/> <br/>
Para:<input type="text" name="para_txt" /> <br/> <br/>
Asunto:<input type="text" name="asunto_txt" /> <br/> <br/>
Adjuntar Archivo: <input type="file" name="archivo_fls" /> <br/> <br/>
Mensaje:<br /><textarea name= "mensaje_txa"/> </textarea> <br/> <br/>
  <input type="submit" name="enviar_btn" value="Enviar"/><br/>
  </form>
</body>
</html>




pero
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar