Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] PHP OO Función mail()

Estas en el tema de Función mail() en el foro de PHP en Foros del Web. Hola chicos, tengo éste código: Código PHP: <?php // El mensaje $mensaje  =  "Hola" ; // Enviarlo   $email = mail ( '[email protected]' ,  'Mi título' ,  $mensaje ); ...
  #1 (permalink)  
Antiguo 16/08/2014, 11:49
 
Fecha de Ingreso: agosto-2014
Mensajes: 31
Antigüedad: 10 años, 3 meses
Puntos: 0
Función mail()

Hola chicos, tengo éste código:

Código PHP:
<?php
// El mensaje
$mensaje "Hola";

// Enviarlo
 
$email=mail('[email protected]''Mi título'$mensaje);
var_dump($email);
?>
¿Por qué 'email' siempre da false, si se supone que es así de sencilla?

Por cierto, en el php.ini tengo lo siguiente:

Código:
[mail function]
; XAMPP: Comment out this if you want to work with an SMTP Server like Mercury
 SMTP = localhost
 smtp_port = 25

; For Win32 only.
; http://php.net/sendmail-from
 sendmail_from = postmaster@localhost
No sé si me falta alguna configuración o algo estoy haciendo mal. También he probado sin meter la función en una variable y recargar la página, pero mi falso SMTP llamado 'smtp4dev' sigue sin detectar nada (intenté configurar Mercury ya que trabajo con XAMPP pero tampoco hay forma, para más información aquí: [URL="http://www.forosdelweb.com/f57/problema-con-mercury-1106324/"]http://www.forosdelweb.com/f57/problema-con-mercury-1106324/ [/URL]).
Decir que necesito enviar un newletter de vez en cuando a emails almacenados en una base de datos, pero como estáis viendo no puedo enviar ni un email de prueba . Cualquier tipo de ayuda sería bienvenida .
  #2 (permalink)  
Antiguo 16/08/2014, 12:01
Avatar de edgarisrael1992  
Fecha de Ingreso: junio-2013
Mensajes: 54
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Función mail()

yo uso phpmailer.

En el host que contratas te proporcionan un servidor smtp con numero de puerto, host etc.. los datos necesarios para poder enviar mensajes.

Revisa la documentación de phpmailer, pones los datos correspondientes.
y no tendría que haber ningún problema.

http://www.desarrolloweb.com/articulos/phpmailer.html

__________________
creo que la principal razón que tengas éxito en lo que haces es amar tu trabajo
  #3 (permalink)  
Antiguo 16/08/2014, 12:10
 
Fecha de Ingreso: marzo-2014
Mensajes: 95
Antigüedad: 10 años, 8 meses
Puntos: 0
Respuesta: Función mail()

Yo estoy de acuerdo con Edgar y yo utilizo esta función

Código PHP:
Ver original
  1. public function _enviar($mensaje, $correo) {
  2.         try {                                  
  3.             //Especificamos los datos y configuración del servidor
  4.             $mail = new PHPMailer();
  5.             $mail->IsSMTP();
  6.             $mail->SMTPAuth = true;
  7.             $mail->SMTPSecure = "ssl";
  8.             $mail->Host = "smtp.gmail.com";        
  9.             $mail->Port = 465;
  10.              
  11.             //Nos autenticamos con nuestras credenciales en el servidor de correo Gmail
  12.             $mail->Username = "[email protected]";
  13.             $mail->Password = "tucontraseña";
  14.              
  15.             //Agregamos la información que el correo requiere
  16.             $mail->From = "[email protected]";
  17.             $mail->FromName = "Administrador";
  18.             $mail->Subject = "El asunto";
  19.             $link = 'http://mipagina.com/index.php';
  20.             $mail->AltBody = "";
  21.             $mail->MsgHTML(''.$mensaje.'<br> <p> Inicia sesi&oacute;n en el siguiente link: </p> <a href="'.$link.'">'.$link.'</a>');
  22.             $mail->AddAddress($correo, $correo);
  23.             $mail->IsHTML(true);
  24.                      
  25.             //Enviamos el correo electrónico
  26.             $mail->Send();
  27.    
  28.             echo "<script> alert('En unos minutos te llegara un correo con instrucciones...');</script>";
  29.            // echo "<script> document.location ='../index.php?msg=" . $error . "'</script>";
  30.         }
  31.         catch (phpmailerException $e) {
  32.             echo $e->errorMessage(); //Mensaje de error si se produjera.
  33.         }
  34.     }
:

Recuerda que tienes que bajar las librerias de phpmailer.
  #4 (permalink)  
Antiguo 16/08/2014, 16:28
 
Fecha de Ingreso: agosto-2014
Mensajes: 31
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Función mail()

edgarisrael1992 seguí el tutorial de desarrolloweb.com pero me daba un error de instancia, no sé por qué.

darkdraco_26 tu código me funcionó a la primera.

Ahora, se supone que con los datos del host que contrate y al no dar ningún error el código debería funcionar y enviarse el mensaje, pero ¿no hay una forma sencilla de probarlo no vaya a ser que luego haya sorpresas? ¿o sencillamente no hace mucha falta?.
  #5 (permalink)  
Antiguo 18/08/2014, 11:01
 
Fecha de Ingreso: julio-2014
Mensajes: 334
Antigüedad: 10 años, 4 meses
Puntos: 30
Respuesta: Función mail()

¿Has probado de incluir las cabeceras (headers) a la función mail()? No todos los servidores aceptarán enviar correos sin cabeceras...

Código PHP:
Ver original
  1. mail('correo', 'asunto', 'mensaje', 'cabeceras');
  #6 (permalink)  
Antiguo 20/08/2014, 09:41
 
Fecha de Ingreso: agosto-2014
Mensajes: 31
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Función mail()

Hola Triby2, he probado con esto:

Código PHP:
<?php
$para
='[email protected]';
$titulo='titulo';
$mensaje='¿Como estás?';
$cabecera='From: [email protected]"\r\n" .
    
'Reply-To: [email protected]"\r\n" .
    
'X-Mailer: PHP/' phpversion();
$email=mail($para$titulo $mensaje$cabecera);
var_dump($email);
?>
Y el contenido de la variable $email sigue dando false. Prácticamente he copiado el ejemplo del manual.

Pero gracias por decirme lo de las cabeceras, no lo sabía.
  #7 (permalink)  
Antiguo 20/08/2014, 10:20
Avatar de ruizinho  
Fecha de Ingreso: noviembre-2012
Ubicación: Granada
Mensajes: 68
Antigüedad: 12 años
Puntos: 2
Respuesta: Función mail()

Ola!! todavía no te funciona??
Yo utilizo este código para cosas sencillitas y me funciona:

Código PHP:
<?php

 
if(!empty($_POST['nombre']) AND !empty($_POST['email']) AND    !empty($_POST['telefono'])  AND !empty($_POST['asunto'])  AND   !empty($_POST['mensaje'])){

$to ="tucorreo";
$headers "Content-Type: text/html; charset=iso-8859-1\n"
$headers .= "From:".$_POST['nombre']."\r\n";            
$tema="asuntodelcorreo";
$mensaje="



<table border='0' cellspacing='2' cellpadding='2'>
  <tr>
    <td width='20%' align='center' bgcolor='#FFFFCC'><strong>Nombre:</strong></td>
    <td width='80%' align='left'>$_POST[nombre]</td>
  </tr>
  <tr>
    <td align='center' bgcolor='#FFFFCC'><strong>E-mail:</strong></td>
    <td align='left'>$_POST[email]</td>
  </tr>
  <tr>
    <td align='center' bgcolor='#FFFFCC'><strong>Teléfono:</strong></td>
    <td align='left'>$_POST[telefono]</td>
  </tr>
   <tr>
    <td width='20%' align='center' bgcolor='#FFFFCC'><strong>Asunto:</strong></td>
    <td width='80%' align='left'>$_POST[asunto]</td>
  </tr>
  <tr>
    <td align='center' bgcolor='#FFFFCC'><strong>Mensaje:</strong></td>
    <td align='left'>$_POST[mensaje]</td>
  </tr>
</table>

"
;
@
mail($to,$tema,$mensaje,$headers); 

  echo 
"Mensajedeexito";

} else {
    echo 
"Mensajedeerror";
}
?>
El html si sabes como es ¿no?

Bueno, espero que te sirva.

Un saludo
__________________
Instalaciones Técnicas Ruiz
  #8 (permalink)  
Antiguo 22/08/2014, 09:37
 
Fecha de Ingreso: agosto-2014
Mensajes: 31
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Función mail()

Bueno chicos, muchísimas gracias, ya me funciona tanto con 'phpmailer' como con 'mail'.
  #9 (permalink)  
Antiguo 22/08/2014, 09:42
 
Fecha de Ingreso: agosto-2014
Mensajes: 35
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Función mail()

como hiciste para q te funcione? tambien trabajo con xampp y la funcion mail() me da true, pero no me llega el email, me podrias pasar el codigo q usaste por favor, y si tengo q configurar el php.ini, por favor por favor
  #10 (permalink)  
Antiguo 23/08/2014, 18:09
 
Fecha de Ingreso: agosto-2014
Mensajes: 31
Antigüedad: 10 años, 3 meses
Puntos: 0
Respuesta: Función mail()

Te explico: yo lo que quería esque la función de mail() me diera true, nada más. Por que para que te envíe el correo necesitas un servidor SMTP, en tu caso, igual que en el mío, podemos usar Mercury que viene con el XAMPP, pero no logro configurarlo para que vaya bien y me envíe el mensaje, aunque parece según comentan arriba que no es necesario puesto que el host que contratas ya te lo da todo.
Te dejo el hilo que hice al respecto por si lo quieres seguir o si consigues configurar el Mercury bien y que te funcione, también puedes aportar algo: http://www.forosdelweb.com/f57/problema-con-mercury-1106324/"]http://www.forosdelweb.com/f57/problema-con-mercury-1106324
En cuanto al php.ini, en principio sólo tienes que descomentar (quitarles el punto y coma del principio) a las siguientes líneas:
[mail function]
; XAMPP: Comment out this if you want to work with an SMTP Server like Mercury
SMTP = localhost
smtp_port = 25

; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = postmaster@localhost

Te debe quedar así.

Etiquetas: variable
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 14:09.