Foros del Web » Programando para Internet » PHP »

Enviar email con PHP

Estas en el tema de Enviar email con PHP en el foro de PHP en Foros del Web. Estoy intentando enviar un email con la función de PHP "email" pero por alguna razón no lo consigo. Este es mi código, que llamo desde ...
  #1 (permalink)  
Antiguo 23/03/2011, 13:49
 
Fecha de Ingreso: mayo-2007
Mensajes: 200
Antigüedad: 16 años, 10 meses
Puntos: 1
Enviar email con PHP

Estoy intentando enviar un email con la función de PHP "email" pero por alguna razón no lo consigo. Este es mi código, que llamo desde el atributo action = email.php que tengo en un formulario. Es simplemente de prueba, para ver si puedo recibir correos.

email.php
Código PHP:
<?php
$para 
'[email protected]';
$titulo 'asf';
$mensaje 'Hola';
$cabeceras 'From: [email protected]"\r\n" .
    
'Reply-To: [email protected]"\r\n" .
    
'X-Mailer: PHP/' phpversion();

mail($para$titulo$mensaje$cabeceras);
?>
Además he revisado el php info de mi hosting y esto es lo que pone:
Código PHP:
sendmail_from                               no value    
sendmail_path                            
/usr/sbin/sendmail --i
mail
.force_extra_parameters     no value
smtp                                           localhost
smtp_port                                  25 
Mi hosting es zobyhost.com, y dicen claramente en su página principal:
  • PHP safe_mode Off
  • PHP send mail ACTIVADO
  • PHP Sockets y Curl ACTIVADOS
  • Soporte .htaccess

¿Qué es lo que estoy haciendo mal para que no me funcione? ¿Cuál es el fallo?
__________________
Blog: http://a-dream-of-dragon.blogspot.com
  #2 (permalink)  
Antiguo 23/03/2011, 14:29
Avatar de paloma8513  
Fecha de Ingreso: enero-2011
Ubicación: Mexico DF
Mensajes: 23
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: Enviar email con PHP

yo utilizo este codigo para enviar mail desde un formulario en mi pagina, espero te sirva solo adaptalo a la tuya.

Código PHP:
<?
require("c:\php\includes\class.phpmailer.php");
if (!
$HTTP_POST_VARS){ 
?>
</td>
  </tr>
  <tr>
    <td><div align="center"><span class="Estilo6"><span class="Estilo7">Lo que quieras decir como cabecera de tu form
      </span>
        </p>
    </span></div></td>
  </tr>
  <tr>
    <td height="12" colspan="3"></td>
  </tr>
  <tr>
    <td width="22" height="150"></td>
    <td width="700"><form action="nombre de tu archivo php" method=post> 
  <p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="Estilo9"> Nombre:</span>
    <input type="text" name="nombre" size=16> 
    </p>
  <p>&nbsp; &nbsp; &nbsp;<span class="Estilo4"> span class="Estilo10"> Email:</span></span> 
      <input type="text "name="email" size=16> 
    </p>
  <p> 
    <span class="Estilo9">Comentarios:</span> 
    <textarea name="Comentario" cols=32 rows=6></textarea> 
    </p>
  <p><input type="submit" class="Estilo4" value="Enviar">
  </p>
</form></td>
    <td width="8"><span class="Estilo14">
      <?
}else{ 
    
$message "Una persona a solicitado informacion via".
    
$message "<br/>".
    
$message "Internet, favor de ponerse en contacto con ella".
    
$message "<br/>".
    
$message "o canalizarla al area correspondiente.".
     
$message "<br/>".
    
$message "<br/>".
    
$message "Formulario enviado".
    
$message "<br/>"
    
$message "<br/>".
    
$message "<br/>"
    
    foreach (
$_POST as $key => $value){
        
$message .= $key " : " $value "<BR><BR>\r\n";
    }
    
    
$mail = new PHPMailer();
    
$mail->IsSMTP();
    
$mail->Host "host.com";// tu host de correo
    
$mail->SMTPAuth true;
    
$mail->Username "[email protected]"// cuenta desde la que envias el correo
    
$mail->Password "Password"// password de tu cuenta de correo
    
$mail->From = ("[email protected]"); // quien lo envia (correo)
    
$mail->FromName "Nombre"// Tu nombre
    
$mail->AddReplyTo ("[email protected]");
    
$mail->AddAddress("quien lo [email protected]");
    
$mail->IsHTML(true);
    
$mail->Subject "Solicitud de informacion";
    
$mail->Body $message;
    
$mail->Send();
    echo 
"Gracias por rellenar el formulario. Se ha enviado correctamente."//ya que lo enviamos agradecemos y avisamos que se envio con exito
    
echo "dentro de poco nos pondremos en contacto contigo.";
    

?>
    </span></td>
  </tr>
  <tr>
    <td height="12" colspan="3"></td>
  </tr>
</table>
Todo esto lo pones entre el body de tu pagina, espero te sirva, si funciona, yo lo utilizo y no tiene errores

si alguien quiere mejoralo adelante, seria muy bueno poner algo contra spam o sistema de captcha pero asi sirve,

Saludos

Ciao
  #3 (permalink)  
Antiguo 23/03/2011, 21:47
 
Fecha de Ingreso: marzo-2008
Mensajes: 1.020
Antigüedad: 16 años, 1 mes
Puntos: 21
Respuesta: Enviar email con PHP

Cita:
Iniciado por vrael Ver Mensaje
Estoy intentando enviar un email con la función de PHP "email" pero por alguna razón no lo consigo. Este es mi código, que llamo desde el atributo action = email.php que tengo en un formulario. Es simplemente de prueba, para ver si puedo recibir correos.

email.php
Código PHP:
<?php
$para 
'[email protected]';
$titulo 'asf';
$mensaje 'Hola';
$cabeceras 'From: [email protected]"\r\n" .
    
'Reply-To: [email protected]"\r\n" .
    
'X-Mailer: PHP/' phpversion();

mail($para$titulo$mensaje$cabeceras);
?>
Además he revisado el php info de mi hosting y esto es lo que pone:
Código PHP:
sendmail_from                               no value    
sendmail_path                            
/usr/sbin/sendmail --i
mail
.force_extra_parameters     no value
smtp                                           localhost
smtp_port                                  25 
Mi hosting es zobyhost.com, y dicen claramente en su página principal:
  • PHP safe_mode Off
  • PHP send mail ACTIVADO
  • PHP Sockets y Curl ACTIVADOS
  • Soporte .htaccess

¿Qué es lo que estoy haciendo mal para que no me funcione? ¿Cuál es el fallo?
Para que funcione lo que indica paloma necesitas de la clase phpmailer, puedes buscarla y descargarla.

Con respecto a tu código, porque no pruebas en poner a mail dentro de una variable, así:
$enviar = mail(parametros);

y con un condicional compruebas esos parametros y si estan presentes (ver isset()) se envia y si no muestras otra vez el formulario.

Ejemplo:
Código PHP:
Ver original
  1.                     $subject = "Asunto";
  2.                     $message = "Contenido del mensaje";
  3.                     $cabeceras = "MIME-Version: 1.0\r\n";
  4.                     $cabeceras = "Content-type: text/html; charset=iso-8859-1\r\n";
  5.                     $cabeceras = "From: Administrador <[email protected]>\r\n";
  6.                     $enviar = @mail($to, $subject, $message, $cabeceras);
  7.                     if (isset($to) && isset($subject) && isset($message) && isset($cabeceras) && isset($enviar)) {
  8.                         echo "<h2>Le hemos enviado un correo electrónico </h2>";
  9.                     } else {
  10.                         echo "<h2>Error de envio</h2>";
  11.                     }
  #4 (permalink)  
Antiguo 24/03/2011, 03:42
 
Fecha de Ingreso: mayo-2007
Mensajes: 200
Antigüedad: 16 años, 10 meses
Puntos: 1
Respuesta: Enviar email con PHP

Ok, voy a probar. Una pregunta. La cabecera donde se indica la dirección de correo del "emisor", es decir, "From", ¿tiene que ser una dirección de correo real? ¿es decir, hay que configurar el php de alguna manera para que envíe los mensajes a través de esa dirección? O, en mi caso, sería la dirección de correo de mi hosting que me permita enviar correos ¿algo así?
__________________
Blog: http://a-dream-of-dragon.blogspot.com
  #5 (permalink)  
Antiguo 24/03/2011, 04:11
 
Fecha de Ingreso: mayo-2007
Mensajes: 200
Antigüedad: 16 años, 10 meses
Puntos: 1
Respuesta: Enviar email con PHP

Pues cuando lo ejecuto me aparece como si lo enviará: "Le hemos enviado un correo electrónico", pero luego miro mi buzón y no me aparece ningún mensaje.
__________________
Blog: http://a-dream-of-dragon.blogspot.com

Etiquetas: email
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:53.