Foros del Web » Programando para Internet » PHP »

Duda Sobre Remitente En Lista

Estas en el tema de Duda Sobre Remitente En Lista en el foro de PHP en Foros del Web. En primer lugar me presento. Soy IvanMSN y Mi Web Es WwW.IvAnMsN.Tk Resulta que encontré un script de lista de correo y el mail lo ...
  #1 (permalink)  
Antiguo 26/04/2004, 11:58
 
Fecha de Ingreso: abril-2004
Mensajes: 4
Antigüedad: 13 años, 7 meses
Puntos: 0
Duda Sobre Remitente En Lista

En primer lugar me presento. Soy IvanMSN y Mi Web Es WwW.IvAnMsN.Tk
Resulta que encontré un script de lista de correo y el mail lo manda como si no hubiera remitente, osea en megaciudad.com lo envia como Nobody <[email protected]>
Quisiera saber donde modificar para enviarlo con el mail que yo quiera y el nombre que yo quiera. El codigo es este:
Código PHP:
<?
//Este script sirve para darse de ALTA/BAJA de una lista de correo

//Envía mails de acuerdo con alta/baja
function alta_baja($tipo,$mail,$enviar)
{
    include(
"config.php");

    
$fecha=time();

    if(
$enviar)
    {
        if (
$tipo=="_altas"//el usuario se quiere dar de alta
        
{
            
//ver si ese mail ya esta suscrito
            
$resp mysql_query("select * from lista where mail='$mail'");
            
$resp2 mysql_fetch_array($resp);

            if(
$resp2[0]==$mail)
            {
                echo 
"<p>Según mis datos ya esta suscrito.</p>";
            }
            else
            {
                
//insertar en tabla temporal
                
$numero substr(md5(rand()),0,10);
                
mysql_query("insert into lista_altas (mail,fecha,numero) values ('$mail','$fecha','$numero')");

                
//enviar mail de confirmación
                
$enlace=$url."/lista.php?op=confirmar_alta&mail=$mail&numero=$numero";

                
$mensaje="Su mail: ".$mail." ha sido subcrito a la lista de correo.\nDebe visitar este enlace ".$enlace." para confirmarlo.\nSino deseada estar en esta lista de correo por favor ignore este mail.\nGracias.";
                
mail($mail,"Darse de alta en lista de correo",$mensaje);
                echo 
"<p>Se ha enviado un mail de confirmación de alta.</p>";
            }
        }
        elseif (
$tipo=="_bajas"//el usuario se quiere dar de baja
        
{
            
//ver si esta inscrito
            
$resp mysql_query("select * from lista where mail='$mail'");
            
$resp2 mysql_fetch_array($resp);

            if(
$resp2[0]!=$mail)
            {
                echo 
"<p>Según mis datos no esta suscrito.</p>";
            }
            else
            {
                
//insertar en tabla temporal
                
$numero substr(md5(rand()),0,10);
                
mysql_query("insert into lista_bajas (mail,fecha,numero) values ('$mail','$fecha','$numero')");

                
//enviar mail de confirmación
                
$enlace=$url."/lista.php?op=confirmar_baja&mail=$mail&numero=$numero";

                
$mensaje="Su mail: ".$mail." quiere darse de baja de la lista de correo.\nDebe visitar este enlace ".$enlace." para confirmarlo.\nSino deseada estar en esta lista de correo por favor ignore este mail.\nGracias.";
                
mail($mail,"Darse de baja en lista de correo",$mensaje);
                echo 
"<p>Se ha enviado un mail de confirmación de baja.</p>";
            }
        }
        else
        {
            echo 
"<p>Debería haber seleccionado una opción.</p>";
        }
    }
    else
    {
        echo 
"<p>No se puede acceder directamente a esta parte.</p>";
    }
}

//Para que el usuario confirme el alta
function confirmar_alta($mail,$numero)
{
    include(
"config.php");
    
//Leer mail y código
    
$resp mysql_query("select * from lista_altas where mail='$mail'");
    
$resp2 mysql_fetch_array($resp);

    if((
$mail!="") && ($numero!=""))
    {
        if((
$resp2[0]==$mail) && ($resp2[2]==$numero))
        {
            
//suscribirse a la lista
            
mysql_query("insert into lista (mail) values ('$mail')");
            echo 
"<p>Su subcripción se ha completada con exito.</p>";

            
$mensaje=$mail."se ha dado de alta en la lista de correo";
            
mail($mail_enviar,"Alta en lista de correo",$mensaje);

            
mysql_query("delete from lista_altas where mail='$mail'");
        }
        else
        {
            echo 
"<p>Hay algun fallo.</p>";
        }
    }
    else 
//intenta entrar directamente
    
{
        
header("location: index.php");
    }
}

//Para que el usuario confirme la baja
function confirmar_baja($mail,$numero)
{
    include(
"config.php");
    
//Leer mail y código
    
$resp mysql_query("select * from lista_bajas where mail='$mail'");
    
$resp2 mysql_fetch_array($resp);

    if((
$resp2[0]==$mail) && ($resp2[2]==$numero))
    {
        
//dessuscribirse a la lista
        
mysql_query("delete from lista where mail='$mail'");
        echo 
"<p>Su subcripción se ha borrado con exito.</p>";

        
$mensaje=$mail."se ha dado de baja en la lista de correo";
        
mail($mail_enviar,"Baja en lista de correo",$mensaje);

        
mysql_query("delete from lista_bajas where mail='$mail'");
    }
    else
    {
        echo 
"<p>Hay algun fallo.</p>";
    }
}

//Para borrar a usuarios que pusieron datos y no han confirmado
function borrar_viejos()
{
    include(
"config.php");

    
//el tiempo en minutos para considerar que se a de dar de alta
    
$tiempo=1440;

    
//fecha actual
    
$fecha=time();

    
//fecha para considerales fuera de línea
    
$limite $fecha-$tiempo*60;

    
//borrar usuarios antiguos
    
mysql_query("delete from lista_altas where fecha < $limite");
    
mysql_query("delete from lista_bajas where fecha < $limite");
}

//Función formulario para añadir/quitar correo
function main()
{
    echo 
"<p>Ponga su mail.</p>\n";
    echo 
"<form method=\"post\" action=\"$PHP_SELF?op=alta_baja\">\n";
    echo 
"<p>\n";
    echo 
"<input type=\"text\" name=\"mail\" /><br />\n";

    echo 
"<input type=\"radio\" name=\"tipo\" value=\"_altas\" />Alta&nbsp;";
    echo 
"<input type=\"radio\" name=\"tipo\" value=\"_bajas\" />Baja<br />";

    echo 
"<input type=\"submit\" name=\"enviar\" value=\"Entrar\" />\n";
    echo 
"</p>\n";
    echo 
"</form>\n";
}

//Para pedir contraseña y ver los usuarios inscritos
function ver()
{
    echo 
"<p>Para ver inscritos.</p>\n";
    echo 
"<form method=\"post\" action=\"$PHP_SELF?op=ver2\">\n";
    echo 
"<p>\n";
    echo 
"Contraseña:<br />\n";
    echo 
"<input type=\"password\" name=\"contrasena_ver\" /><br /><br />\n";
    echo 
"<input type=\"submit\" name=\"enviar_ver\" value=\"Enviar\" />\n";
    echo 
"</p>\n";
    echo 
"</form>\n";
}

//Para ver los usuarios inscritos
function ver2($enviar_ver,$contrasena_ver)
{
    if(
$enviar_ver)
    {
        include(
"config.php");
        if(
$contrasena_ver==$dbpass)
        {
            include(
"config.php");
            
$resp2 mysql_query("select * from lista");
            echo 
"<p><b>Usuarios inscritos</b><br />";
            while(
$datos2 mysql_fetch_array($resp2))
            {

                echo 
"$datos2[mail]<br />";
            }
            echo 
"<br />\n";

        }
        else
        {
            
header("location: lista.php");
        }
    }
    else
    {
        
header("location: lista.php");
    }
}

//Para pedir contraseña y preparar mail
function enviar()
{
    echo 
"<p>Para mandar un mensaje.</p>\n";
    echo 
"<form method=\"post\" action=\"$PHP_SELF?op=enviar2\">\n";
    echo 
"<p>\n";
    echo 
"Asunto:<br />\n";
    echo 
"<input type=\"text\" name=\"asunto\" /><br />\n";
    echo 
"Mensaje:<br />\n";
    echo 
"<textarea name=\"mensaje\" cols=\"30\" rows=\"5\"></textarea><br />\n";
    echo 
"Contraseña:<br />\n";
    echo 
"<input type=\"password\" name=\"contrasena_enviar\" /><br /><br />\n";
    echo 
"<input type=\"submit\" name=\"enviar_enviar\" value=\"Enviar\" />\n";
    echo 
"</p>\n";
    echo 
"</form>\n";
}

//Para mandar mail
function enviar2($enviar_enviar,$contrasena_enviar,$asunto,$mensaje)
{
    if(
$enviar_enviar)
    {
        include(
"config.php");
        if(
$contrasena_enviar==$dbpass)
        {
            include(
"config.php");
            
$resp2 mysql_query("select * from lista");
            while(
$datos2 mysql_fetch_array($resp2))
            {
                if(
$mail_listado=="")
                {
                    
$mail_listado=$datos2[mail];
                }
                else
                {
                    
$mail_listado=$mail_listado.",".$datos2[mail];
                }

            }

            
$header ="Bcc: ".$mail_listado."\r\n";

            
mail(null,$asunto,$mensaje,$header);
            echo 
"<p>Mail enviado con éxito.</p>\n";
        }
        else
        {
            
header("location: lista.php");
        }
    }
    else
    {
        
header("location: lista.php");
    }
}

//Para segundo pie
function fin()
{
    echo 
"<p>";
    echo 
"<span class=\"pequeno\">";
    echo 
"[<a href=\"$PHP_SELF?op=main\">Lista de correo</a>]&nbsp;\n";
    echo 
"[<a href=\"$PHP_SELF?op=ver\">Ver inscritos</a>]&nbsp;\n";
    echo 
"[<a href=\"$PHP_SELF?op=enviar\">Enviar mail</a>]&nbsp;\n";
    echo 
"</span>";
    echo 
"</p>\n";
}

//Inicio de la página
function meta()
{
    
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"  "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <?
}

//Inicio del body
function cabecera()
{
    
?>
</head>
<body>
    <?
}

//Fin del body
function pie()
{
    
?>
</body>
</html>
    <?
}

switch(
$op)
{
    case 
"alta_baja":
        
meta();
        echo 
"<title>Lista de correo</title>\n";
        
cabecera();
        
borrar_viejos();
        
alta_baja($tipo,$mail,$enviar);
        
fin();
        
pie();
    break;

    case 
"confirmar_alta":
        
meta();
        echo 
"\n<title>Confirmar el alta</title>\n";
        
cabecera();
        
borrar_viejos();
        
confirmar_alta($mail,$numero);
        
fin();
        
pie();
    break;

    case 
"confirmar_baja":
        
meta();
        echo 
"\n<title>Confirmar la baja</title>\n";
        
cabecera();
        
borrar_viejos();
        
confirmar_baja($mail,$numero);
        
fin();
        
pie();
    break;

    case 
"ver":
        
meta();
        echo 
"\n<title>Ver inscritos</title>\n";
        
cabecera();
        
ver();
        
fin();
        
pie();
    break;

    case 
"ver2":
        
meta();
        echo 
"\n<title>Ver inscritos</title>\n";
        
cabecera();
        
ver2($enviar_ver,$contrasena_ver);
        
fin();
        
pie();
    break;

    case 
"enviar":
        
meta();
        echo 
"\n<title>Enviar mail</title>\n";
        
cabecera();
        
enviar();
        
fin();
        
pie();
    break;

    case 
"enviar2":
        
meta();
        echo 
"\n<title>Enviar mail</title>\n";
        
cabecera();
        
enviar2($enviar_enviar,$contrasena_enviar,$asunto,$mensaje);
        
fin();
        
pie();
    break;

    default:
        
meta();
        echo 
"<title>Lista de correo</title>\n";
        
cabecera();
        
borrar_viejos();
        
main();
        
fin();
        
pie();
    break;
}
?>
Se que es un poco largo, pero no se como ponerlo mas corto para que me entendais.
  #2 (permalink)  
Antiguo 26/04/2004, 12:18
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 16 años, 1 mes
Puntos: 5
Hola Iván... menudo despliegue de código :P

Aquí tienes un ejemplo de uso de la función mail() extraído de php.net (http://es.php.net/manual/es/function.mail.php):

mail("[email protected]", "El tema", $message,
"From: [email protected]$SERVER_NAME\nReply-To: [email protected]$SERVER_NAME\nX-Mailer: PHP/" . phpversion());

Lo que viene a continuación de "From es la dirección del emisor del correo. Puedes poner lo que quieras y lo que que a continuación de "Reply-To" es la direccion de email que quieres que ponga en caso de que el que recibe el mail le dé al botón Responder.

Suerte!
__________________
BUSCO TELETRABAJO
Experiencia de mas de 4 años como desarrolladora web en PHP, ASP, XML, XSL, JavaScript, MySQL, PostGres, SQLServer, ...
  #3 (permalink)  
Antiguo 26/04/2004, 12:34
 
Fecha de Ingreso: abril-2004
Mensajes: 4
Antigüedad: 13 años, 7 meses
Puntos: 0
Si, eso lo probé.
El problema es que en el espacio del from esta header que no se para que sirve:S me podrias decir como tengo que ponerlo para que funcione?
  #4 (permalink)  
Antiguo 28/04/2004, 02:15
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 16 años, 1 mes
Puntos: 5
$header es precisamente lo que tienes que poner a partir de "From: ...." .

Tonces, haz que imprima por pantalla el contenido de $header o dímelo tú mismo lo que devuelve la consulta "select * from lista"

Para que te lo imprima por pantalla cambia la función enviar2() por el siguiente código:

Código PHP:
//Para mandar mail
function  enviar2($enviar_enviar,$contrasena_enviar,$asunto,$mensaje)
{
    if(
$enviar_enviar)
    {
        include(
"config.php");
        if(
$contrasena_enviar==$dbpass)
        {
            include(
"config.php");
            
$resp2 mysql_query("select * from lista");
            while(
$datos2 mysql_fetch_array($resp2))
            {
                if(
$mail_listado=="")
                {
                    
$mail_listado=$datos2[mail];
                }
                else
                {
                    
$mail_listado=$mail_listado.",".$datos2[mail];
                }

            }

            echo 
"mail_listado: ".$mail_listado."<br>";

            
$header ="Bcc: ".$mail_listado."\r\n";

            
mail(null,$asunto,$mensaje,$header);
            echo 
"<p>Mail enviado con éxito.</p>\n";
        }
        else
        {
            
header("location: lista.php");
        }
    }
    else
    {
        
header("location: lista.php");
    }

Espero tu respuesta
  #5 (permalink)  
Antiguo 28/04/2004, 07:45
 
Fecha de Ingreso: abril-2004
Mensajes: 4
Antigüedad: 13 años, 7 meses
Puntos: 0
Cita:
Tonces, haz que imprima por pantalla el contenido de $header o dímelo tú mismo lo que devuelve la consulta "select * from lista"
La consulta "select * from lista" devuelve todos los usuarios subscritos a la lista.
  #6 (permalink)  
Antiguo 28/04/2004, 07:46
 
Fecha de Ingreso: abril-2004
Mensajes: 4
Antigüedad: 13 años, 7 meses
Puntos: 0
Yo lo que quiero saber es que envez de que envie el mail con el nombre NoBody y con el mail [email protected]
Lo mande con el nombre IvanMSN y con el mail que yo quiera.
  #7 (permalink)  
Antiguo 29/04/2004, 01:53
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 16 años, 1 mes
Puntos: 5
Es que resulta que donde pones $header es donde tienes que poner lo que quieres. Así que no se...

Pon la función de esta manera y me cuentas:

Código PHP:
//Para mandar mail
function   enviar2($enviar_enviar,$contrasena_enviar,$asunto,$mensaje)
{
    if(
$enviar_enviar)
    {
        include(
"config.php");
        if(
$contrasena_enviar==$dbpass)
        {
            include(
"config.php");
            
$resp2 mysql_query("select * from lista");
            while(
$datos2 mysql_fetch_array($resp2))
            {
                if(
$mail_listado=="")
                {
                    
$mail_listado=$datos2[mail];
                }
                else
                {
                    
$mail_listado=$mail_listado.",".$datos2[mail];
                }

            }

            
$header ="Bcc: ".$mail_listado."\r\n";

            
mail(null,$asunto,$mensaje,"From: [email][email protected][/email]);
            echo "
<p>Mail enviado con éxito.</p>n";
        }
        else
        {
            header("
locationlista.php");
        }
    }
    else
    {
        header("
locationlista.php");
    }

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 15:16.