Comunidad PHPeros

Lenguajes => PHP => Mensaje iniciado por: Raken en 21 de Octubre de 2006, 16:34:02 pm

Título: mail() - Enviar e-mail
Publicado por: Raken en 21 de Octubre de 2006, 16:34:02 pm
Una característica interesante de PHP es que éste puede mandar e-mails a cuentas de correo, y lo hace desde una función predeterminada muy simple.

Estoy hablando de la función mail()


Sintaxis

Para hacer uso de ésta función sólo hay que escribir:
mail(e-mail, asunto, mensaje);

Ej. mail("contacto@diver-habbo.net", "Hola", "que tal naveda?? xD");


Uso de variables

Para usar la función mail() también se puede hacer uso de variables.

Ej. $email = "contacto@diver-habbo.net";
$asunto = "Hola";
$mensaje = "Que tal Naveda?? XD";

mail ($email, $asunto, $mensaje);

Estas variables se pueden recoger también desde un formulario, utilizando $_POST, como se explicará en un mensaje a parte en este foro. Así, el formulario podría mandar e-mails con la ayuda de PHP.


Mensaje multilínea

Código: [Seleccionar]
Esto son
saltos de
linea

Para enviar un mensaje con saltos de línea... se puede escribir \n en el momento que quieres cambiar de línea.

Ej. $mensaje = "Esto son\n saltos de\n linea";

Si quieres que se vea un poco más claro puedes concatenar. ¿Qué es eso de concatenar? Pues es asociar varios strings a una misma variable. ¿No se ha entendido, verdad? ;D Mejor con un ejemplo:

Ej. $mensaje = "Esto son\n"
     ."Saltos de\n"
     ."Linea";


Para el que quiera ir más lejos...

Hay algo que no he explicado, pero en lo que no voy a entrar, y es que en la función mail() se pueden incluir headers para definir el tipo de contenido que habrá en el e-mail (si será HTML o texto plano, qué tipo de codificación, prioridad.. etc)


Más información en http://es2.php.net/manual/en/function.mail.php





Título: Re: mail() - Enviar e-mail
Publicado por: kekoman en 01 de Enero de 2007, 01:11:55 am
muy util  :(  ;) Gracias!
Título: Re: mail() - Enviar e-mail
Publicado por: CarlosRdrz en 01 de Enero de 2007, 14:21:17 pm
Tambien puedes añadir "Headers" para que no tenga problemas, como por ejemplo con Hotmail, que requiere unos Headers para que se inserte en tu Bandeja de entrada, y no se dirija a bandeja de correo electronico no deseado.
Si los encuentro por ahi los pongo!
Saludos
Título: Re: mail() - Enviar e-mail
Publicado por: kekoman en 27 de Abril de 2007, 12:54:26 pm
karma+
Título: Re: mail() - Enviar e-mail
Publicado por: G2K en 27 de Abril de 2007, 23:05:56 pm
KARMA +
Título: Re: mail() - Enviar e-mail
Publicado por: Ishamato en 17 de Mayo de 2007, 16:48:06 pm
+ karma ^^
Título: Re: mail() - Enviar e-mail
Publicado por: Raken en 21 de Mayo de 2007, 01:26:20 am
Gracias amores :)

Estoy de vuelta! .. pasaba por aquí ..
Título: Re: mail() - Enviar e-mail
Publicado por: kekoman en 21 de Mayo de 2007, 14:29:46 pm
eres un crack ;D tienes karma 23 "mamon" xD
ahora tienes karma 24 ;D karma plus ;D
Título: Re: mail() - Enviar e-mail
Publicado por: mOrK en 21 de Mayo de 2007, 17:30:45 pm
Bienvenido de nuevo ;)
Título: Re: mail() - Enviar e-mail
Publicado por: G2K en 21 de Mayo de 2007, 19:31:00 pm
Pregunta del millón para Raken o Naveda :P o para los 2 para que no os pegeis :PPPP

Si por ejemplo tengo X numero de usuarios a los qual quiero enviar un mail a travez de esta función.

Como deberia hacerlo?

Hacer el formulario con un monton de casilleros y en el enviar poner un monton de funciones  mail()??

ejemplo:

<?php
$email1 = "correo@blablabla.com";
$asunto = "Hola";
$mensaje = "Que tal Naveda?? XD";

mail ($email1, $asunto, $mensaje);

$email2 = "correo_2@blablabla.com";

mail ($email2, $asunto, $mensaje);

$email3 = "correo_3@blablabla.com";

mail ($email3, $asunto, $mensaje);

?>
Título: Re: mail() - Enviar e-mail
Publicado por: kekoman en 21 de Mayo de 2007, 21:43:11 pm
en codigo php puedes poner el numero de funcciones que te da la gana ;D!
Título: Re: mail() - Enviar e-mail
Publicado por: G2K en 21 de Mayo de 2007, 22:04:25 pm
ya pero es una matada hacer eso... imagina que tienes 200 personas a enviar... hazlo anda... xD es una matada
Título: Re: mail() - Enviar e-mail
Publicado por: JuAnCHO en 21 de Mayo de 2007, 23:25:59 pm
Pregunta del millón para Raken o Naveda :P o para los 2 para que no os pegeis :PPPP

Solo haces preguntas para Raken o Naveda ?

Las preguntas debes hacerlas a todos los foreros que visitamos PHPeros, si uno no sabe la respuesta, la puede dar otro. Pero no solo preguntar a los mismo, porque si alguien puede darte la solución, como has preguntado solo a estos, no te la dará.

Saludos!
Título: Re: mail() - Enviar e-mail
Publicado por: Raken en 22 de Mayo de 2007, 00:04:54 am
Pregunta del millón para Raken o Naveda :P o para los 2 para que no os pegeis :PPPP

Si por ejemplo tengo X numero de usuarios a los qual quiero enviar un mail a travez de esta función.

Como deberia hacerlo?

Hacer el formulario con un monton de casilleros y en el enviar poner un monton de funciones  mail()??

ejemplo:

<?php
$email1 = "correo@blablabla.com";
$asunto = "Hola";
$mensaje = "Que tal Naveda?? XD";

mail ($email1, $asunto, $mensaje);

$email2 = "correo_2@blablabla.com";

mail ($email2, $asunto, $mensaje);

$email3 = "correo_3@blablabla.com";

mail ($email3, $asunto, $mensaje);

?>



No es necesario hacer el proceso a mano. Piensa que X puede ser un número muy extenso o que vaya variando automáticamente. Para este tipo de casos puedes utilizar bucles.

Suponiendo que guardas la lista de estos usuarios en una matriz, así:

<?  $usuarios_lista = array("Pepe@pepe.com", "Juan@juan.com", "Manolo@manolo.com"); ?>


(Si conoces acerca de las matrices, arrays en inglés, sabrás que puedes mostrarlos así:)

<? echo $usuarios_lista[0]; //Mostrara Pepe@pepe.com
echo $usuarios_lista[1]; //Mostrara Juan@juan.com
echo $usuarios_lista[2]; //Mostrara Manolo@manolo.com
?>


Pues a lo que iba. Para repetir el proceso X veces puedes hacer uso de bucles, como por ejemplo la función FOR.


<?
$numero_usuarios = 5; //Esta seria la X, el numero de usuarios, pongo 5 por poner UN EJEMPLO
$i = 0; //Este es el valor numerico que ira sumando, para recorrer 0, 1, 2, 3... hasta el numero de usuarios.

for ($i=0; $i<=$numero_usuarios; $i++) {

mail ($usuarios_lista[$i], $asunto, $mensaje);

}


Con esto enviará un e-mail a cada asociado a la lista de usuarios, recorriendo desde el usuario 0 hasta el que tengamos (5 en el ejemplo)

Saludos ;)
Título: Re: mail() - Enviar e-mail
Publicado por: naveda en 22 de Mayo de 2007, 00:10:55 am
O también...

<?  $usuarios_lista = array("Pepe@pepe.com", "Juan@juan.com", "Manolo@manolo.com"); ?>

<?PHP
foreach ($usuarios_lista as $value) {
mail ($value, $asunto, $mensaje);
}
?>
Título: Re: mail() - Enviar e-mail
Publicado por: G2K en 22 de Mayo de 2007, 07:39:01 am
Pregunta del millón para Raken o Naveda :P o para los 2 para que no os pegeis :PPPP

Solo haces preguntas para Raken o Naveda ?

Las preguntas debes hacerlas a todos los foreros que visitamos PHPeros, si uno no sabe la respuesta, la puede dar otro. Pero no solo preguntar a los mismo, porque si alguien puede darte la solución, como has preguntado solo a estos, no te la dará.

Saludos!
No, no... lo decia porque Raken era el que explicaba la función y naveda bueno no hace falta que diga lo que sabe :P

Cualquiera puede responder
Título: Re: mail() - Enviar e-mail
Publicado por: G2K en 22 de Mayo de 2007, 07:41:18 am
Muy bueno... gracias a los 2... pero veo el codigo de naveda con menos trabajo y lo que de verdad importa... ahorrar codigo!! :P
Título: Re: mail() - Enviar e-mail
Publicado por: Raken en 22 de Mayo de 2007, 15:55:02 pm
Muy bueno... gracias a los 2... pero veo el codigo de naveda con menos trabajo y lo que de verdad importa... ahorrar codigo!! :P

No, en realidad yo hice la explicación completa y él aportó una variante (también válida) para las últimas líneas. En realidad es esto:


for ($i=0; $i<=$numero_usuarios; $i++) {
mail ($usuarios_lista[$i], $asunto, $mensaje);
}


contra esto:


foreach ($usuarios_lista as $value) {
mail ($value, $asunto, $mensaje);
}


No hay diferencia prácticamente, y cualquiera de las dos es válida. ;) Saludos.
Título: Re: mail() - Enviar e-mail
Publicado por: naveda en 22 de Mayo de 2007, 16:00:02 pm
En efecto, ambos metodos usan diferentes formas de iteración pero con el mismo efecto :P
Título: Re: mail() - Enviar e-mail
Publicado por: G2K en 22 de Mayo de 2007, 19:07:17 pm
A vale gracias Raken por la explicación ;)

Saludossssss ^^
Título: Re: mail() - Enviar e-mail
Publicado por: kekoman en 23 de Mayo de 2007, 15:46:50 pm
tambien si queres puedes poner en el formulario donde vas a poner el campo de "email" puedes poner direcciones de email separadas por coma y se enviara a las dos xD ;D!
ejemplo: mierda@caca.com,ijode*****@hotmail.com xD
Título: Re: mail() - Enviar e-mail
Publicado por: G2K en 23 de Mayo de 2007, 18:56:41 pm
tambien si queres puedes poner en el formulario donde vas a poner el campo de "email" puedes poner direcciones de email separadas por coma y se enviara a las dos xD ;D!
ejemplo: mierda@caca.com,ijode*****@hotmail.com xD
Vaya ejemplos as utilizado... xD
Título: Re: mail() - Enviar e-mail
Publicado por: naveda en 23 de Mayo de 2007, 19:01:33 pm
Sisi, que finura...
Título: Re: mail() - Enviar e-mail
Publicado por: x.mara.x en 29 de Septiembre de 2007, 20:31:36 pm
Yo e echo 1 formmail con 2 archivos .. me chequean los errores? el primero es

form.php
<form method="POST" action="enviar.php">
   <p>Titulo<br>
   <input type="text" name="titulo" size="20"><br>
   Nombre<br>
   <input type="text" name="mensaje1" size="20"><br>
   Mensaje:<br>
   <textarea rows="2" name="mensaje2" cols="20"></textarea></p>
   <p><input type="submit" value="Enviar" name="B1"><input type="reset" value="Restablecer" name="B2"></p>
</form>

luego esta enviar.php
<?
$email = "mara_phpera@hotmail.com";
$asunto = $_POST['titulo'];
$mensaje = $_POST['mensaje1'] && $_POST['mensaje2'];

mail ($email, $asunto, $mensaje);
?>

Ahora el error dice asi:
Warning: mail() has been disabled for security reasons in /home/virtual/sitio154382/www/formmail/enviar.php on line 6

que sera?
Título: Re: mail() - Enviar e-mail
Publicado por: mOrK en 29 de Septiembre de 2007, 20:41:59 pm
Creo que es porque no hay headers, creo...
Título: Re: mail() - Enviar e-mail
Publicado por: CarlosRdrz en 29 de Septiembre de 2007, 23:42:50 pm
Seguramente será porque tu host no soporta la funcion mail, quizas para evitar el envio masivo de estos.
Saludos
Título: Re: mail() - Enviar e-mail
Publicado por: naveda en 30 de Septiembre de 2007, 11:26:56 am
Dios mio, yo no se como llevais el ingles pero vamos que lo veo bastante bien explicado en el error que devuelve PHP:

Citar
Warning: mail() has been disabled for security reasons in /home/virtual/sitio154382/www/formmail/enviar.php on line 6

Por razones de seguridad, no dice cuales, la función mail() ha sido deshabilitada.

¿Solución?
Cambiar de Servidor por uno que la tenga activada o aguantarte...
Título: Re: mail() - Enviar e-mail
Publicado por: mOrK en 30 de Septiembre de 2007, 16:03:20 pm
La verdad que no lo leí :$

Perdón!
Título: Re: mail() - Enviar e-mail
Publicado por: autorojo en 04 de Octubre de 2007, 19:26:21 pm
¿Y cómo se hace un Formulario?
 Osea, poner por ejemplo

Citar
Edad: [Cuadro para escribir]
MSN: [Cuadro para escribir]
[Botón enviar]

al enviar que diga
Citar
[Alert]Su Formulario ha sido enviado con éxito[/Alert]
y si puso algo mal
Citar
[Alert] Olvido rellenar el campo $campo1[/Alert]
y que lo lleve a mi mail
Título: Re: mail() - Enviar e-mail
Publicado por: mOrK en 04 de Octubre de 2007, 19:48:11 pm
¬¬ Hay tutoriales en PHPeros en donde encontrarás información sobre como crear formularios de contacto, busca y aprende... no damos códigos hechos (de normal xD)
Título: Re: mail() - Enviar e-mail
Publicado por: Frank005 en 04 de Octubre de 2007, 19:55:45 pm
Hola,

que alguien me ayude, necesito un hosting que tenga activada la funcion mail() y que no tenga publicidad .. Pregunta en muchos lados pero no responden  :o
Título: Re: mail() - Enviar e-mail
Publicado por: albrandariz en 04 de Octubre de 2007, 20:04:13 pm
yo no te puedo ayudar por q los que yo utilizo de gratishost no la tienen activada, y por que no buscas alguno de publi que sea muy poco visible?
Título: Re: mail() - Enviar e-mail
Publicado por: naveda en 05 de Octubre de 2007, 14:33:58 pm
Y xq no pagas 1€ por un alojamiento en EEUU que te va a ir mas rapido que uno gratuito y no tendrás publi?...
No se creo que igual te sale mas rentable y todo...
Título: Re: mail() - Enviar e-mail
Publicado por: x.mara.x en 06 de Octubre de 2007, 02:25:51 am
si, o usar un host propio con easyphp? puede ser no?
Título: Re: mail() - Enviar e-mail
Publicado por: CarlosRdrz en 06 de Octubre de 2007, 08:40:52 am
Y xq no pagas 1€ por un alojamiento en EEUU que te va a ir mas rapido que uno gratuito y no tendrás publi?...
No se creo que igual te sale mas rentable y todo...

El problema de esto es que necesitas algun metodo de pago que vaya hasta estados unidos, como sea tarjeta de credito o lo que sea, pero no creo que muchos tengan esa posibilidad.

Saludos!
Título: Re: mail() - Enviar e-mail
Publicado por: x.mara.x en 06 de Octubre de 2007, 21:18:48 pm
pues si hay un hst que es gratuito y le sirve la funcion mail, no es por spam que lo digo es alojalo.info :P
Título: Re: mail() - Enviar e-mail
Publicado por: G2K en 08 de Octubre de 2007, 21:44:49 pm
si, o usar un host propio con easyphp? puede ser no?
Prefiero xampp :P
Yo creo que es mejor
Título: Re: mail() - Enviar e-mail
Publicado por: lalitros en 22 de Octubre de 2007, 04:25:43 am
Es seguro el XAMPP?...:S

Y cual seria un HOST DE PAGO apropiado y seguro aca en Mexico, alguien sabe?... :D
Muxas Grax por Respponder!

Un saludo!
Título: Re: mail() - Enviar e-mail
Publicado por: G2K en 22 de Octubre de 2007, 17:17:47 pm
Es seguro el XAMPP?...:S

Y cual seria un HOST DE PAGO apropiado y seguro aca en Mexico, alguien sabe?... :D
Muxas Grax por Respponder!

Un saludo!
Uf lo vas a tener chungo amigo...
Título: Re: mail() - Enviar e-mail
Publicado por: Rasca en 22 de Octubre de 2007, 17:52:28 pm
os abeis desviado del tema xD

Bueno Frank yo estoy provando con este:
www.awardspace.com

200 Mb de espacio
5 Gb de trafico
2 dominios
5 Subdominios
1 base de datos Mysql
5 cuentas de e-mail
5 cuentas ftp
Sin banners
Gratuito
Te dan de alta al instnte
Se supone que es bueno pero como todos los gratis el correo llega a los 10 min

saludos
Título: Re: mail() - Enviar e-mail
Publicado por: x.mara.x en 04 de Enero de 2008, 16:11:31 pm
Oigan como instaldo un xamp?
Título: Re: mail() - Enviar e-mail
Publicado por: kekoman en 04 de Enero de 2008, 20:34:30 pm
es lo mas fácil del mundo! Das siguiente, siguiente, completas todos los datos, y cuando acaba la instalación debes ir a http://localhost  :) :)
Título: Re: mail() - Enviar e-mail
Publicado por: G2K en 12 de Enero de 2008, 22:22:36 pm
Oigan como instaldo un xamp?
Cuando te conectes si quieres te hecho una mano ;)
Título: Re:mail() - Enviar e-mail
Publicado por: santiago_c en 25 de Enero de 2013, 23:29:57 pm
Es decir que con esta funcion en sitios como foros,podemos hacer esto de "la confirmacion de cuenta mandando un email"?
Título: Re:mail() - Enviar e-mail
Publicado por: CarlosRdrz en 26 de Enero de 2013, 13:29:37 pm
Es decir que con esta funcion en sitios como foros,podemos hacer esto de "la confirmacion de cuenta mandando un email"?

Exacto.

Te pediría que por favor no habras temas tan viejos :P
Este es del 2007!

Anota las dudas que te salgan, y en lugar de responder en temas viejos crea uno nuevo.
Si necesitas referirte a este tema indica la URL y listo :)

Saludos
Título: Re:mail() - Enviar e-mail
Publicado por: cjbaeza en 30 de Enero de 2013, 12:50:01 pm
schiuuu.....