Foros del Web » Programando para Internet » PHP »

Codigo para enviar emails

Estas en el tema de Codigo para enviar emails en el foro de PHP en Foros del Web. Hola a todos, tengo el siguiente codigo para enviar emails, que en su momento funciono pero debí hacer algún cambio y ahora no funciona, a ...
  #1 (permalink)  
Antiguo 22/09/2009, 05:56
thi
 
Fecha de Ingreso: abril-2009
Mensajes: 244
Antigüedad: 15 años
Puntos: 0
Codigo para enviar emails

Hola a todos,

tengo el siguiente codigo para enviar emails, que en su momento funciono pero debí hacer algún cambio y ahora no funciona, a ver si veis el fallo.

Los datos del POST los recibe de un formulario.

<?php

//datos de la conexion a la base de datos
//require('conexion.php');

$destinatario = $_POST['para'];

$asunto = $_POST['asunto'];

if ($_POST[asunto] != "" AND $_POST[para] != "" AND $_POST[mensaje] != "")
{
$cuerpo = $_POST[mensaje];
}
else
{
echo ' - Ha quedado sin rellenar alguno de los campos obligatorios. - ';
break;
}

//para el envío en formato HTML
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

//dirección del remitente
$headers .= "From: ".$_POST['miemail']."\r\n";

//direcciones que recibirán copia oculta
$headers .= "Bcc: ".$_POST['bcc']."\r\n";

$cuerpo = $_POST['mensaje'];

mail($destinatario,$asunto,$cuerpo,$headers);

echo ' - Formulario enviado - ';
?>
  #2 (permalink)  
Antiguo 22/09/2009, 06:02
5xc
 
Fecha de Ingreso: septiembre-2009
Mensajes: 19
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Codigo para enviar emails

Las comillas de los POST del if.

Y los AND no sé si funcionan, yo suelo usar &&
  #3 (permalink)  
Antiguo 22/09/2009, 10:14
 
Fecha de Ingreso: octubre-2007
Ubicación: Capital Federal
Mensajes: 215
Antigüedad: 16 años, 6 meses
Puntos: 1
Respuesta: Codigo para enviar emails

Tenes mal ésta parte:

if ($_POST[asunto] != "" AND $_POST[para] != "" AND $_POST[mensaje] != "")


Ponela asi:

( ( if ($_POST['asunto'] != "") AND ($_POST['para'] != "") AND ($_POST['mensaje'] != "") )
  #4 (permalink)  
Antiguo 22/09/2009, 11:43
Avatar de pato12  
Fecha de Ingreso: septiembre-2007
Ubicación: Salta
Mensajes: 1.620
Antigüedad: 16 años, 6 meses
Puntos: 101
Respuesta: Codigo para enviar emails

Hola,
El AND si anda.. existe la funcion empty.. prueba haci:
Código php:
Ver original
  1. if(!empty($_POST['asunto']) and !empty($_POST['para']) and !empty($_POST['mensaje']))
Suerte
Salu2

PD: Usa exit o die, y no break.
__________________
Half Music - www.halfmusic.com
  #5 (permalink)  
Antiguo 22/09/2009, 12:41
 
Fecha de Ingreso: junio-2008
Mensajes: 53
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Codigo para enviar emails

Este es el codigo corregido
Código PHP:

<?php

//datos de la conexion a la base de datos
//require('conexion.php');

$destinatario $_POST['para'];

$asunto $_POST['asunto'];

if (
$_POST['asunto'] != "" AND $_POST['para'] != "" AND $_POST['mensaje'] != "")//faltaban como ya te habian dicho las ' de los posts
{
//he reestructurado el cuerpo del if , para que si no se cumplen las condiciones solo haga el echo
$cuerpo $_POST['mensaje'];
//para el envío en formato HTML
$headers "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

//dirección del remitente
$headers .= "From: ".$_POST['miemail']."\r\n";

//direcciones que recibirán copia oculta
$headers .= "Bcc: ".$_POST['bcc']."\r\n";

$cuerpo $_POST['mensaje'];

mail($destinatario,$asunto,$cuerpo,$headers);

echo 
' - Formulario enviado - ';

}
else
{
echo 
' - Ha quedado sin rellenar alguno de los campos obligatorios. - ';
//break; Este break no tiene sentido aqui , recuerda que el break se usa para la instruccion switch
}

?>
usar empty o usar != '' , es lo mismo , solo que al usar la funcion empty es mas rapido

Código PHP:
<?php
    $micro
=microtime(true);
    while(
$a <= 1000){
        if(
$b !== ''){
        
        }
        
$a++;
    }
    unset(
$a);
    
//Contador de tiempo de ejecucion
    
$trueMicro=microtime(true)-$micro;
    echo 
$trueMicro;//0.00105690956116
    
    
$micro2=microtime(true);
    while(
$a <= 1000){
        if(empty(
$b)){
        
        }
        
$a++;
    }
    
//Contador de tiempo de ejecucion
    
$trueMicro2=microtime(true)-$micro2;
    echo 
'<br>'.$trueMicro2;//0.000187873840332

?>
saludos...
  #6 (permalink)  
Antiguo 23/09/2009, 04:24
thi
 
Fecha de Ingreso: abril-2009
Mensajes: 244
Antigüedad: 15 años
Puntos: 0
Respuesta: Codigo para enviar emails

Hola a todos,

gracias por vuestras respuestas, he probado todo lo que me poneis y sigue sin funcionar. Puede ser un problema del servidor?, es que yo conseguí enviar correos con este codigo(salvo que me equivoque e hiciera alguna modificación al codigo y ahora no me de cuenta cual ha sido)

P.D.: eversor no se que es el segundo codigo que pones.

Un saludo.
  #7 (permalink)  
Antiguo 23/09/2009, 07:48
 
Fecha de Ingreso: junio-2008
Mensajes: 53
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: Codigo para enviar emails

El codigo que te he puesto primero es la version corregida , si no envia el mail lo mas probable es que sea por el servidor

y el segundo es simplemente un codigo de prueba que dice que es mas rapido si hacer !empty() o !='' para comprobar si una variable esta vacia , pero ese no sirve para nada
  #8 (permalink)  
Antiguo 23/09/2009, 08:44
Avatar de Jandor  
Fecha de Ingreso: septiembre-2009
Mensajes: 71
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Codigo para enviar emails

Hola que tal por que no pruebas con este codigo tiene algunos cambios espero te sirva:
Eso si yo por costumbre para los "AND" uso mehor "&&"

<?php

$destinatario = $_POST['para'];
$asunto = $_POST['asunto'];

if ($_POST['asunto'] != "" && $_POST['para'] != "" && $_POST['mensaje'] != "") {

$cuerpo = $_POST[mensaje];

$headers = "MIME-Version: 1.0\r\nContent-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: \"" .$_POST['miemail']."\r\n";

//dirección del remitente
$headers .= "From: ".$_POST['miemail']."\r\n";

//direcciones que recibirán copia oculta
$headers .= "Bcc: ".$_POST['bcc']."\r\n";


mail($destinatario,$asunto,$cuerpo,$headers);

}

else {
echo ' - Ha quedado sin rellenar alguno de los campos obligatorios. - ';
break;
}

?>


Bueno espero te sirva de algo!!!!

Última edición por Jandor; 23/09/2009 a las 08:50
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 01:06.