PHP - Problemas con php y Mysql

 
Vista:

Problemas con php y Mysql

Publicado por Julián (1 intervención) el 01/12/2006 09:04:29
Wenas, mi problemas es el siguiente.

Tengo un código que he sacado de internet para enviar emails en php, y lo e modificado un poco para que se envíe a todos los correos electrónicos de una base de datos en Mysql.

Resulta que me saca correctamente los emails y demás. y me dice que se envía bien y todo, pero nunca me llegan los correos.

Aquí dejo el dódigo utilizado, a ver si alguien me podría hechar una manita por favor.

Muchas gracias!

Lo podéis ver en http://www.gslucussolis.org/emailmasivo/emailmasivo2.html

Del HTML (emailmasivo2.html)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Escribenos</title>
<style type="text/css">
<!--
.Estilo1 {
color: #990000;
font-weight: bold;
}
-->
</style>
</head>

<body>
<H1 align="center" class="Estilo1">Enviar un correo a todos los socios.</H1>

<FORM ACTION="emailmasivo.php" METHOD="GET">
<div align="center">Introduzca el asunto:
<INPUT NAME="asunto" TYPE="text" value="Aquí el asunto">
<BR>
<BR>

</div>
<label>
<div align="center">Escriba el mensaje:<br />
<textarea name="mensaje" cols="50" rows="15">Testo que se enviará....</textarea>
</div>
</label>
<div align="center"><BR>
<INPUT TYPE="submit" VALUE="Enviar">
<INPUT type="reset" VALUE="Borrar">
</div>
</FORM>
</body>
</html>




Del PHP (emailmasivo.php)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Email masivo</title>
</head>

<body>
<?

$dbh=mysql_connect ("localhost", "wiki_wiki", "ju-lian") or die ('I cannot connect to the database because: ' . mysql_error());
mysql_select_db ("wiki_aupad");

$body = $_REQUEST['mensaje'];
$subject = $_REQUEST['asunto'];

$numeroemail="select count(email) from socios";
$correcto=mysql_query($numeroemail, $dbh) or die("<h1>Error al contar los socios</h1>");
$r2=mysql_fetch_row($correcto) or die("Error");
echo"Se enviará a un total de $r2[0] direcciones";
for($i=1;$i<=$r2[0];$i=$i+1)
{
$direccio="select email from socios where id='$i'";
$correcto=mysql_query($direccio, $dbh) or die("<h1>Error al comprobar email en la base de datos</h1>");
$rr=mysql_fetch_row($correcto) or die("Error");
$direccion="$rr[0]";

if ($direccion!=""){
if (mail($direccion, $subject, $body)) {
echo"<p>¡Mensaje enviado correctamente a la direccion: ",$direccion,"!";
} else {
echo("<p>Fallo al enviar el mensaje</p>");
}
} else {echo "Error, el campo dirección esta vacío.";}
}
mysql_close($dbh);
?>
</body>
</html>
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

RE:Problemas con php y Mysql

Publicado por ludwing (57 intervenciones) el 01/12/2006 15:54:43
Puede que no te mande correos porque el servidor web en el que albergas tus PHP no tenga un MTA corriendo. Has probado a mandarte algo sencillito?. Por ejemplo:

<?php
if (mail ("[email protected]", "Hola", "")){
echo "Correo en camino...";
}
else{
echo "No se ha mandado nada...";
}
?>

De todas formas, y sin ánimo de ofender, creo que no tienes muy bien resuelto el tema del envio. Yo lo haría así:

<?php
$dbh=mysql_connect ("localhost", "wiki_wiki", "ju-lian") or die ('I cannot connect to the database because: ' . mysql_error());
mysql_select_db ("wiki_aupad");

$body = $_GET['mensaje'];
$subject = $_GET['asunto'];

$sql = "SELECT email FROM socios";
$rsSocios = mysql_query ($sql) or die ("<h1>Error al recoger los socios.</h1>");

echo "Se enviará a un total de " . mysql_num_rows ($rsSocios) . " direcciones";

//Recogemos todas las direcciones en una variable separadas por comas
$para = "";
while ($rowSocio = mysql_fetch_array ($rsSocios)){
if (trim ($rowSocio["email"]) != ""){
$para .= "$rowSocio[email],";
}
}

//Quitamos la coma final
$para = rtrim ($para, ",");

//Mandamos el correo
if (mail($para, $subject, $body)) {
echo"<p>¡Mensaje enviado correctamente!";
} else {
echo("<p>Fallo al enviar el mensaje</p>");
}

mysql_close($dbh);
?>

Espero no haber cometido ningún error (esto de editar a ciegas...) pero yo lo haría así.
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