Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Variable dentro de función mail()

Estas en el tema de Variable dentro de función mail() en el foro de PHP en Foros del Web. Tengo un problema con la ocnstrucción de la función mail, mi problema es que deseo ingresar una variable dentro del valor del primer componente de ...
  #1 (permalink)  
Antiguo 21/12/2014, 21:02
 
Fecha de Ingreso: diciembre-2014
Ubicación: México DF
Mensajes: 4
Antigüedad: 9 años, 4 meses
Puntos: 0
Pregunta Variable dentro de función mail()

Tengo un problema con la ocnstrucción de la función mail, mi problema es que deseo ingresar una variable dentro del valor del primer componente de mail() (es decir el destinatario) llamese to, para, etc,.

Cuando declaro la variable así no hay problema:

$to = "[email protected]";

pero lo que pretendo es hacer algo como:

$variable = $_POST['email'];
$to = $variable;

Es decir pasar una variable extraída vía POST e ingresarla en una variable nueva para utilizarla como primer elemento de la función mail().

Este es posible? no lo había intentado, he buscado y no encuentro nada por ningún lado..

Agradecería ampliamente cualquier ayuda. gracas
  #2 (permalink)  
Antiguo 22/12/2014, 03:46
 
Fecha de Ingreso: septiembre-2014
Mensajes: 180
Antigüedad: 9 años, 7 meses
Puntos: 14
Respuesta: Variable dentro de función mail()

Si haciendo esto:

Código PHP:
Ver original 

Te funciona pero no lo hace con esto:

Código PHP:
Ver original
  1. $variable = $_POST['email'];
  2. $to = $variable;

Es que la variable $_POST['email'] no tiene ningún valor. Comprueba que tiene valor, porque es el único cambio entre lo que te funciona y lo que no.
__________________
Unelink.es - VPS, servidores dedicados, hosting y dominios. 10 años a tu lado.
  #3 (permalink)  
Antiguo 22/12/2014, 06:22
 
Fecha de Ingreso: octubre-2014
Ubicación: Buenos Aires
Mensajes: 278
Antigüedad: 9 años, 6 meses
Puntos: 12
Respuesta: Variable dentro de función mail()

Hola hodrah, estas creando una variable de más.

Tu código

Código PHP:
Ver original
  1. $variable = $_POST['email'];
  2. $to = $variable;

Código

Código PHP:
Ver original
  1. $to = $_POST['email'];


verifica haciendo un print de la variable $_POST para verificar que tenga datos, si la variable post esta vacía verifica tu form.

Código PHP:
Ver original
  1. print $_POST['email']; exit;

Espero te sirva.

Saludos.
__________________
http://www.sp-vision.net
  #4 (permalink)  
Antiguo 22/12/2014, 09:23
(Desactivado)
 
Fecha de Ingreso: enero-2013
Mensajes: 289
Antigüedad: 11 años, 3 meses
Puntos: 10
Respuesta: Variable dentro de función mail()

la función mail() de php tiene algunos inconvenientes. Yo usaría PHPmailer o swiftmailer
  #5 (permalink)  
Antiguo 22/12/2014, 09:27
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Variable dentro de función mail()

Cita:
Iniciado por moginn Ver Mensaje
la función mail() de php tiene algunos inconvenientes. Yo usaría PHPmailer o swiftmailer
La función mail() no tiene ningún inconveniente, solo limitaciones... pero en el caso del amigo, no es la limitación el problema porque yo lo hago perfectamente.

Sería de mucha utilidad que ponga su código completo así lo verificamos.. saber si una variable es obtenida vacia es muy fácil con la función nativa EMPTY() de PHP... si viene vacía es porque NO SE ENVIÓ, o tiene otro nombre, o similar.
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #6 (permalink)  
Antiguo 22/12/2014, 20:45
 
Fecha de Ingreso: diciembre-2014
Ubicación: México DF
Mensajes: 4
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Variable dentro de función mail()

Woooooooow agradezco enormemente su tiempo! no pensé respuestas tan rápidas, de antemano gracias.

Definitivamente todos tienen razón,

lo primero que pensé, fue que la variable en cuestión no contenía el dato exacto, razón por la que hice todo tipo de prints, incluso dumps, pero la variable que manejo le hago un var_dump y me sale perfecto justo el valor correcto

lo segundo que pensé fue que mail() efectivamente es una función simple y corta para enviar un correo, sin embargo sería genial para mí por que me parece que lo que deseo es simple, es solo el problema de envío, que no ocurre cuando asigno de manera dinámica

Y es totalmente cierto, estoy usando una variable de más, pero eso se debe a que una vez realizado este proceso modificaré el código para colgarle funciones, pero sin esto estoy frito.

También pensé que se debía a la codificación utf-8 que a mi me ha resuelto la vida desde hace uno tiempo, intente las iso, la de windows, la de linux y en todas el correo llega perfecto si el destinatario no es asignado dinámicamente.

Me parecía un abuso poner todo el código pero si se me permite he aquí...

(hago los 2 echo y el var_dump solo con fines de checar el estado de las variables el cual me aparece perfectamente correcto, en este caso variable post "mail" la llamé "name".)


<?php
$neem = $_POST['name'];
require ("asjh4/pr.php");
$tabla = "tuytr678";
$conexion = mysqli_connect($cfg_servidor, $cfg_usuario, $cfg_password, $cfg_basephp1);
if (mysqli_connect_errno()) {
printf("Fallo al conectar: %s\n", mysqli_connect_error());
exit();
}
$estat = "SELECT crestr FROM $tabla WHERE correo = '$neem'";
$situac = mysqli_query($conexion, $estat);
while ($tar=mysqli_fetch_row($situac)){
$wyyt = $tar[0];
}
mysqli_close($conexion);
echo $wyyt."<br />";
echo $neem."<br />";

$header = 'From: ' . $neem . " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain; charset=utf-8";

$mensaje = "Este mensaje fue enviado por... " . $neem . " \r\n";
$mensaje .= "Clave: " . $wyyt . " \r\n";
$mensaje .= "Fue enviado... " . date('d/m/Y', time());

$para = $neem;
$asunto = "Clave de paso";

mail($_POST['name'], $asunto, utf8_decode($mensaje), $header);
var_dump($para);
?>

En resumen el correo me funciona perfectamente cuando el destinatario no es asignado dinámicamente, y por cierto ví lo de PHPmailer y en definitiva es una buena opción.

Gracias por su tiempo
  #7 (permalink)  
Antiguo 23/12/2014, 06:10
 
Fecha de Ingreso: octubre-2014
Ubicación: Buenos Aires
Mensajes: 278
Antigüedad: 9 años, 6 meses
Puntos: 12
Respuesta: Variable dentro de función mail()

Hola hodrah, usa los Highlight para resaltar el código y así entender mejor, por otra parte esta muy desordenado tu código.

vamos por paso.

Cual es tu variable que contiene el mail ??, porque en el mensaje 1º pones esto.

Código PHP:
Ver original
  1. $variable = $_POST['email'];
  2. $to = $variable;
  3.  
  4. Después pones esto.
  5.  
  6. $neem = $_POST['name']; // --> $_POST['name'] es el nombre o el mail ??????
  7.  
  8. // donde dice $_POST['name']  tendría que ir el mail y no el nombre.
  9. mail($_POST['name'], $asunto, utf8_decode($mensaje), $header);
  10.  
  11. // Variable $para innecesaria
  12. $para = $neem;
  13. $asunto = "Clave de paso";
  14.  
  15. mail($_POST['name'], $asunto, utf8_decode($mensaje), $header);
  16.  
  17. // es lo mismo que hagas var_dump($neem)
  18. var_dump($para);

Código PHP:
Ver original
  1. ******************** PHP MAIL **********************
  2.  
  3. // yo utilizo siempre php mail y me funciona de 10 ptos. te pongo como yo lo utilizo.
  4.  
  5. $subject = $_POST['subject']; // valor enviado desde un formulario
  6. $to = explode(',', $_POST['to'] ); // valor enviado desde un formulario
  7.  
  8.  
  9. //data
  10. $msg = "Nombre: "  .$_POST['name']    ."<br>\n"; // valor enviado desde un formulario
  11. $msg .= "Email: "  .$_POST['email']    ."<br>\n"; // valor enviado desde un formulario
  12. $msg .= "Mensaje: "  .$_POST['comments']    ."<br><br>\n"; // valor enviado desde un formulario
  13.  
  14.  
  15. //Headers
  16. $headers  = "MIME-Version: 1.0\r\n";
  17. $headers .= "Content-type: text/html; charset=UTF-8\r\n";
  18. $headers .= "From: <".$from. ">" ;
  19.  
  20.  
  21. //send for each mail
  22. foreach($to as $mail){
  23.    mail($mail, $subject, $msg, $headers);
  24.    echo $mail;
  25. }

Saludos.
__________________
http://www.sp-vision.net
  #8 (permalink)  
Antiguo 23/12/2014, 07:31
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Variable dentro de función mail()

La variable $neem, según veo, posee el contenido del NOMBRE del destinatario, cuando que debería tener el CORREO del destinatario... no se que te parece...
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #9 (permalink)  
Antiguo 23/12/2014, 23:53
 
Fecha de Ingreso: diciembre-2014
Ubicación: México DF
Mensajes: 4
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Variable dentro de función mail()

Buenas noches, si, estoy de acuerdo en que está desordenado, y pido disculpa por ello; la razón por la que existe esa duplicidad de variables es por que una vez que solucione este problema, necesitaré el dato de la variable post[] libre en una nueva variable para trabajar con el dato, en realidad lo que publique es un extracto de código, publiqué concretamente el problema que tengo, el dump y los echos de las variables $para y $neem los tengo por el momento así para tratar de ubicar el error.

Efectivamente en el primer ejemplo puse otras variables por que era muy concreta mi duda, las bases de datos no las manejo yo, incluso su formulario los maneja mi cliente, por lo que la variable POST[] que me llega con el correo electrónico se llama 'name'.

Estoy empezando a creer que el servidor donde se aloja la página no permite asignación dinámica de destinatario en esa función en concreto, así que esperaré a que pasen las fiestas y me pondré en contacto con el administrador.

Por otro lado esa forma de programación me gustó bastante mauritosuarez, totalmente controlada de principio a fin, el explode para asignar y foreach para array y el echo de remate! de 10 puntos!

Enriquecedor

Esperaré a probar el código para marcar solucionado, no tardo

Gracias miles
  #10 (permalink)  
Antiguo 29/12/2014, 23:08
 
Fecha de Ingreso: diciembre-2014
Ubicación: México DF
Mensajes: 4
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Variable dentro de función mail()

Solucionado!

El problema consistía en el permiso que tenia para mandar correos, estaba intentando enviar correos desde un sub dominio, cosa que no está permitida y de hecho es incomoda, el domino padre es el que tenía los permisos y estructura para mandar correos.

Agradezco en verdad su ayuda que me sirvió de mucho para pulir el código.

Saludos

Etiquetas: funcion, mail, 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 09:53.