Regresar a la página www.ComoCrearTuWeb.com
Página 1 de 2 12 ÚltimoÚltimo
Resultados 1 al 15 de 26

Tema: Enviar emails por medio de php (Simplificado para poco expertos)

  1. #1
    Esto empieza a ser un vicio... Habitante Avatar de Rabs
    Fecha de Ingreso
    16 jun, 11
    Ubicación
    Madrid
    Mensajes
    780
    Poder de Reputación
    17

    Post Enviar emails por medio de php (Simplificado para poco expertos)

    (1º de todo, ya se que hay un tutorial sobre esto, pero este es más facil y además su autor me ha dejado hacer una nuevo (Gracias Doodelo))
    Lo primero de todo es crear la zona en la que el usuario de la web metera sus datos (nombre y/o email, mensaje etc...) Lo podemos hacer dentro de una página ya existente o en otra página nueva. Para simplificaros las cosas, lo haré como si fuera una página nueva con el nombre de contacto.html.

    Lo primero será decir al navegador lo que queremos del usuario, y esto lo hacemos por medio de
    Código HTML:
    <form action="xxx.php" method="post" name="contacto">
    Lo que le decimos es que inicie un from para la dirección xxx.php , siendo el nombre de este contacto. Lo siguiente que hacemos es poner las opciones que queramos que halla:
    Código HTML:
    <p>Name<input type="text" name="nombre" value="" /></p></label>
    <p>Email Address<input type="text" name="email" value="" /></p></label>
    <label><p>Mensaje<textarea textarea" rows="8" cols="50" name="mensaje"></textarea></p></label>
    <input type="submit" name="envio" value="Enviar"/>
    </form>
    Lo que aqui hacemos es pedir el nombre, el email del remitente y el menasje en si (Lo último es obio, nadie quiere mensajes vacios :P) Y nombrando a cada uno de ellos a traves de
    Código:
    name="X"
    y despues, cerramos el from (No sin antes haber puesto el botón de enviar:
    (<input type="submit" name="envio" value="Enviar"/>).

    Ease, que contacto.html quedaría asi:
    Código HTML:
    <form action="xxx.php" method="post" name="contacto">
     <p>Name<input type="text" name="nombre" value="" /></p>
     <p>Direccion de email<input type="text" name="email" value="" /></p>
     <p>Mensaje<textarea rows="8" cols="50" name="mensaje"></textarea></p>
     <input type="submit" name="envio" value="Enviar"/>
    </form>
    Ahora creamos un archivo .php y por ejemplo lo llamamos envia-eso.php (Ahora que ya tenemos un nombre, acordaos de cambiar el nombre en <form action="xxx.php" method="post" name="contacto">
    por <form action="envia-eso.php" method="post" name="contacto">

    Ahora nos ponemos a editar envia-eso.php (Primero lo pongo todo y luego os lo explico ¿ok?)

    Código PHP:
    <?php
    $remitente 
    $_POST['email'] ;
    $destino "Aqui tu email" ;
    $asunto "Mensaje que llega desde mi web a traves de la pagina contacto" ;
    $mensaje $_POST['mensaje'] ;
    $encabezados "From: $remitente\nReply-To: $remitente\nContent-Type: text/html; charset=iso-8859-1" ;
    mail($destino$asunto$mensaje$encabezados) or die ("No se ha podido enviar tu mensaje. Ha ocurrido un error") ;
    echo 
    "<p>Tu mensaje a sido enviado con este contenido:</p>" ;
    echo 
    "<strong><b>$mensaje</b></strong>" ;
    ?>
    Lo que aquí hacemos es:
    "Convertir" de HTML a PHP lo que hemos dicho en el formulario de contacto mediante la opción
    $variable-a-la-que-se-convierte= $_POST['nombre de la veriable del formulario'] ;
    Le espepificamos primero un destinatario por medio de la variable $destino, asi que edita esa variable y pon tu email si no quieres que los email se envien a ningún lado :P.

    Lo siguiente es decir el asunto que tendra tu mensaje, para diferenciarlos del resto que te llegen a la web, yo en este caso he puesto:
    Código:
    Mensaje que llega desde mi web a traves de la pagina contacto
    Pero puedes poner el que te de la gana, o si no, también esta la opcion de que el usuario elija un Asunto (Que puede estar ya definido o no) . Pero eso lo podre en una actualizacion que ya esta en la zona de abajo de ESTE MISMO TUTORIAL, tras los guiones en rojo :) .

    Lo siguiente que hacemos es en $encabezados y es decir de quién es (From: $remitente) y decir a quién responder (Reply-To: $remitente) y le hemos metido un código "mágico" para que el usuario pueda usar HTML en el mensaje, el cual podeis desactivar eliminado en $encabezados: \nContent-Type: text/html; charset=iso-8859-1

    Luego con la función mail, juntamos todas las variables que el usuario nos ha dicho y enviamos el mail a la dirección dicha en $destino
    ¿Ves que despues de esto esta: or die ("No se ha podido enviar tu mensaje. Ha ocurrido un error") ; ?
    Lo que hace ese pequeño trazo es avisar cunando un mensaje no ha podido ser enviado.

    Ya al final, con:
    echo "<p>Tu mensaje a sido enviado con este contenido:</p>" ;
    echo "<strong><b>$mensaje</b></strong>" ;
    Lo que hacemos es decirle unas palabritas a nuestro usuario, como por ejemplo:
    Tu mensaje ha sido enviado, con este contenido:
    ¿Y como conseguimos que nustros usuarios vean lo que han escrito? Muy facil, es simplemente llamar a la variable que contiene el mensaje y puf! hay está.
    Código PHP:
    echo "<strong><b>$mensaje</b></strong>" 
    ¡Como por arte de mágia eh! ;)

    Asi que, las 2 páginas quedarian asi:
    contacto.html
    Código HTML:
    <form action="envia-eso.php" method="post" name="contacto">
     <p>Name<input type="text" name="nombre" value="" /></p>
     <p>Direccion de email<input type="text" name="email" value="" /></p>
     <p>Mensaje<textarea rows="8" cols="50" name="mensaje"></textarea></p>
      <input type="submit" name="envio" value="Enviar"/>
    </form>
    envia-eso.php
    Código PHP:
    <?php
    $remitente 
    $_POST['email'] ;
    $destino "Aqui tu email" ;
    $asunto "Mensaje que llega desde mi web a traves de la pagina contacto" ;
    $mensaje $_POST['mensaje'] ;
    $encabezados "From: $remitente\nReply-To: $remitente\nContent-Type: text/html; charset=iso-8859-1" ;
    mail($destino$asunto$mensaje$encabezados) or die ("No se ha podido enviar tu mensaje. Ha ocurrido un error") ;
    echo 
    "<p>Tu mensaje a sido enviado con este contenido:</p>" ;
    echo 
    "<strong><b>$mensaje</b></strong>" ;
    ?>
    No olvides preguntarnos a todos tus dudas en el foro y decirme si algo no te sale, que te ayudo ;)

    (Gracias de nuevo a Doodleo por dejarme hacer esto :) )

    ----------------------------------------------------
    Como dejar que nuestro usuario elija el asunto. (PARTE I: Asuntos pre-definidos)
    Lo primero de todo, al ser opciones, vamos ha hacer lo mismo que en el mensaje (a la hora de rellenar los campos del formulario) , solo que esta vez haremos a traves de la opción slect. Ya sabeis, primero lo pongo y ahora lo explico :P.
    Código HTML:
    <select multiple="false" size="1">
      <option name="1">Primer asunto</option>
      <option name="2">Segundo asunto</option>
      <option name="3">Tercer asunto</option>
      <option name="4">Cuarto asunto</option>
    </select>
    Lo primero como no es abrir la etiqueta select (Si no lo hiciesemos, sería como intentar echarte leche al ColaCao teniendo en tetrabrick cerrado). En ella le decimos que solo se puede seleccionar 1 (A traves de multiple="false")(Si pusiesemos true , nos dejaría cojer más de uno )

    Ahora que lo tenemos, lo ponemos justo entre Nombre y Dirección Email, en la página contacto.html .

    Ahora editamos envia-eso.php para que haga caso a contacto.html editando la variable
    Código:
    $asunto
    .
    Si la variable asunto originalmente era:
    Código PHP:
    $asunto "Mensaje que llega desde mi web a traves de la pagina contacto" 
    Ahora lo que habría que hacer sería:
    Código PHP:
      switch ( $asunto )
      {
         case 
    1: echo "Primer asunto." ; break ;
         case 
    2: echo "Segundo asunto." ; break ;
         case 
    3: echo "Tercer asunto." ; break ;
         case 
    4: echo "Cuarto asunto" ; break ;
         default: echo 
    "Mensaje web enviado desde mi web" ;
      } 
    (Para más información sobre Switch ve a: http://www.comocreartuweb.com/curso-...ol/switch.html

    Ahora analizemos el código:
    Lo primero que hacemos es llamar a la función Switch para que la compare con los resultados obtenidos en la anterior página. (Ve aquí para saber más sobre el Switch)
    Y un detalle que se me olvida es que NO se si el default funciona en este caso, si no es asi avisarme y lo corrigo ¿ok? :)

    Si sigues esta forma, el código quedaría:
    contacto.html
    Código HTML:
    <form action="envia-eso.php" method="post" name="contacto">
     <p>Name<input type="text" name="nombre" value="" /></p>
     <p>Asunto</p>
    <select multiple="false" size="1">
      <option name="1">Primer asunto</option>
      <option name="2">Segundo asunto</option>
      <option name="3">Tercer asunto</option>
      <option name="4">Cuarto asunto</option>
    </select>
     <p>Direccion de email<input type="text" name="email" value="" /></p>
     <p>Mensaje<textarea rows="8" cols="50" name="mensaje"></textarea></p>
     <input type="submit" name="envio" value="Enviar"/>
    </form>
    envia-eso.php
    Código PHP:
    $remitente $_POST['email'] ;
    $destino "Aqui tu email" ;
    switch ( 
    $asunto )
    {
         case 
    1: echo "Primer asunto." ; break ;
         case 
    2: echo "Segundo asunto." ; break ;
         case 
    3: echo "Tercer asunto." ; break ;
         case 
    4: echo "Cuarto asunto" ; break ;
         default: echo 
    "Mensaje web enviado desde mi web" ;
    }
    $mensaje $_POST['mensaje'] ;
    $encabezados "From: $remitente\nReply-To: $remitente\nContent-Type: text/html; charset=iso-8859-1" ;
    mail($destino$asunto$mensaje$encabezados) or die ("No se ha podido enviar tu mensaje. Ha ocurrido un error") ;
    echo 
    "<p>Tu mensaje a sido enviado con este contenido:</p>" ;
    echo 
    "<strong><b>$mensaje</b></strong>" 


    Como dejar que nuestro usuario elija el asunto. (PARTE II: El usuario elije el mismo)
    Este metodo tiene la ventaja de ser un poco más facil... Pero no sabes quien te lo envia, o lo que es peor... No sabes si te lo envian desde TU web.

    Para poner este metodo, solo necesitas añadir un pequeño input a contacto.html
    Código HTML:
     <p>Asunto<input type="text" name="Asunto" value="" /></p>
    Esto ya lo he explicado, no creo que lo necesites ;P

    Ahora editamos envia-eso.php para que sepa como interpretar ese input.

    Si la linea inicial sobre la que "trabajamos" (Lo pongo entre comillas por que esto lo prefiero tomar como un hobby) es:
    Código PHP:
    $asunto "Mensaje que llega desde mi web a traves de la pagina contacto" 
    Tendríamos que cambiarla y ponerla tal que asi:
    Código PHP:
    $asunto $_POST['asunto] ; 
    Con eso lo que conseguimos es llamar al input "asunto", para que sea el valor de la variable $asunto (Uy! Nos estamos empezando a repetir con los nmbres , pero no pasa nada. Los navegadores/servidores son MUY listos y no se equivocan)

    Si sigues este método, el código quedaría tal que asi:
    contacto.html
    Código HTML:
    <form action="envia-eso.php" method="post" name="contacto">
     <p>Name<input type="text" name="nombre" value="" /></p>
     <p>Asunto<input type="text" name="asunto" value="" /></p>
     <p>Direccion de email<input type="text" name="email" value="" /></p>
     <p>Mensaje<textarea rows="8" cols="50" name="mensaje"></textarea></p>
     <input type="submit" name="envio" value="Enviar"/>
    </form>
    envia-eso.php
    Código PHP:
    <?php
    $remitente 
    $_POST['email'] ;
    $destino "Aqui tu email" ;
    $asunto $_POST['asunto'] ;
    $mensaje $_POST['mensaje'] ;
    $encabezados "From: $remitente\nReply-To: $remitente\nContent-Type: text/html; charset=iso-8859-1" ;
    mail($destino$asunto$mensaje$encabezados) or die ("No se ha podido enviar tu mensaje. Ha ocurrido un error") ;
    echo 
    "<p>Tu mensaje a sido enviado con este contenido:</p>" ;
    echo 
    "<strong><b>$mensaje</b></strong>" ;
    ?>
    Ya sabeis:
    Espero haberos ayudado :)
    No olvides preguntarnos a todos tus dudas en el foro y decirme si algo no te sale, que te ayudo ;)
    O si yo tengo un error (Que también es posible) :)
    Última edición por Rabs; 19/10/2011 a las 13:53 Razón: Tercera actualizacion, correccion de erroresn)
    Mericherno.es - Web del servidor DayZ hecha con la inestimable ayuda de johnetrep :)
    http://www.fernandosalcedo.com

  2. #2
    Administrador CCTW Webmaster de CCTWHabitante Avatar de Jorgens_CCTW
    Fecha de Ingreso
    30 ene, 11
    Ubicación
    Cartagena, Murcia, España.
    Mensajes
    1,184
    Poder de Reputación
    10
    Revisa el enlace de la web que nos pones de ejemplo, la de valsia. Parece no funcionar.

    Ahí van unos punticos de agradecimiento! je je je. A ver si consigues el dominio gratis por un año que seguramente regale CCTW a los colegas del foro más votados.

    Más info en: http://www.comocreartuweb.com/consul...-concurso-CCTW

  3. #3
    Esto empieza a ser un vicio... Habitante Avatar de Rabs
    Fecha de Ingreso
    16 jun, 11
    Ubicación
    Madrid
    Mensajes
    780
    Poder de Reputación
    17
    jorgens, el enlaze está bien, al menos yo si puedo entrar xD Y gracias por los puntos :P
    Mericherno.es - Web del servidor DayZ hecha con la inestimable ayuda de johnetrep :)
    http://www.fernandosalcedo.com

  4. #4
    Esto empieza a ser un vicio... Habitante Avatar de Doodleo
    Fecha de Ingreso
    25 abr, 11
    Ubicación
    Galicia (España)
    Mensajes
    1,329
    Poder de Reputación
    21
    El enlace aún no funciona porque los de Razy están revisándolo por si contiene algo malo, en unas horas supongo que ya funcionará.
    Puedes probar ese formulario en el hosting de cctw a ver si es el hosting el que no permite el envío de emails? tengo un formulario bien hecho y no me los envía :S

    PD: muy bueno el tutorial y te daría puntos pero me pone que le tengo que dar a otros usuarios antes de poder darte

  5. #5
    Administrador CCTW Webmaster de CCTWHabitante Avatar de Jorgens_CCTW
    Fecha de Ingreso
    30 ene, 11
    Ubicación
    Cartagena, Murcia, España.
    Mensajes
    1,184
    Poder de Reputación
    10
    Me dice esto cuando trato de entrar:

    Website Under Review

    You are seeing this page because th system administreator of 000webhost.com is currently checking this website for malicious content. This redirect page will be removed once we finish manually checking all files on this account. Since we check over 100 websites per day, it can take about 2-4 hours to complete. If you are the owner of this website, you will get an email confirmation once it's done. If you are a visitor, please come back later.

  6. #6
    Esto empieza a ser un vicio... Habitante Avatar de Rabs
    Fecha de Ingreso
    16 jun, 11
    Ubicación
    Madrid
    Mensajes
    780
    Poder de Reputación
    17
    Pues a esperar se ha dicho. Pero mirar lo que he averiguado:
    Muchas personas no pueden usar el php en el hosting de CCTW por que, al abrirlo con CPanel, hay una opcion llamada Administrador de archivos, que es como el HTML-Kit pero en linea (seguro que lo conozeis) Y lo que ocurre es que al escrinir EL MISMO CÓDIGO, el php e incluso JavaScript, se "desactiva" como por arte de magia. Asiq eu yo recomendaría seguir usando HTML-Kit o DreamWever, que si que deja usar TODO (Si se tiene instalado :P)
    Mericherno.es - Web del servidor DayZ hecha con la inestimable ayuda de johnetrep :)
    http://www.fernandosalcedo.com

  7. #7
    Esto empieza a ser un vicio... Habitante Avatar de Doodleo
    Fecha de Ingreso
    25 abr, 11
    Ubicación
    Galicia (España)
    Mensajes
    1,329
    Poder de Reputación
    21
    Yo no uso el Administrador de archivos, uso Archivos jeje
    El caso es que hace un tiempo funcionaba el formulario pero de repente... bam! no funciona jajaja

  8. #8
    Administrador CCTW Webmaster de CCTWHabitante Avatar de Jorgens_CCTW
    Fecha de Ingreso
    30 ene, 11
    Ubicación
    Cartagena, Murcia, España.
    Mensajes
    1,184
    Poder de Reputación
    10
    Cita Iniciado por Rabs Ver Mensaje
    Pues a esperar se ha dicho. Pero mirar lo que he averiguado:
    Muchas personas no pueden usar el php en el hosting de CCTW por que, al abrirlo con CPanel, hay una opcion llamada Administrador de archivos, que es como el HTML-Kit pero en linea (seguro que lo conozeis) Y lo que ocurre es que al escrinir EL MISMO CÓDIGO, el php e incluso JavaScript, se "desactiva" como por arte de magia. Asiq eu yo recomendaría seguir usando HTML-Kit o DreamWever, que si que deja usar TODO (Si se tiene instalado :P)
    Ups, habrá que avisarlo a los amigos de CCTW para que no se vuelvan locos! ja ja ja. Gracias!

  9. #9
    Esto empieza a ser un vicio... Habitante Avatar de Rabs
    Fecha de Ingreso
    16 jun, 11
    Ubicación
    Madrid
    Mensajes
    780
    Poder de Reputación
    17
    Nada, para eso estamos. Haces un trabajo excelento Jorgens ;)
    Mericherno.es - Web del servidor DayZ hecha con la inestimable ayuda de johnetrep :)
    http://www.fernandosalcedo.com

  10. #10
    Esto empieza a ser un vicio... Habitante Avatar de Rabs
    Fecha de Ingreso
    16 jun, 11
    Ubicación
    Madrid
    Mensajes
    780
    Poder de Reputación
    17
    Cita Iniciado por Doodleo Ver Mensaje
    Yo no uso el Administrador de archivos, uso Archivos jeje
    El caso es que hace un tiempo funcionaba el formulario pero de repente... bam! no funciona jajaja
    Pues eso, haclo con HTML-Kit o DreamWever, ya veras como funciona ;)
    Mericherno.es - Web del servidor DayZ hecha con la inestimable ayuda de johnetrep :)
    http://www.fernandosalcedo.com

  11. #11
    Esto empieza a ser un vicio... Habitante Avatar de Doodleo
    Fecha de Ingreso
    25 abr, 11
    Ubicación
    Galicia (España)
    Mensajes
    1,329
    Poder de Reputación
    21
    Con hacerlo con HTML-Kit te refieres a que haga el código en el programa y lo suba por FTP o sólo que lo suba por FTP (o sólo que lo haga en HTML-Kit y lo suba por Archivos? jejeje)

  12. #12
    Esto empieza a ser un vicio... Habitante Avatar de Rabs
    Fecha de Ingreso
    16 jun, 11
    Ubicación
    Madrid
    Mensajes
    780
    Poder de Reputación
    17
    Hehehe, me refiero a que lo hagas y lo subas por HTML-Kit (No por otra cosa, si no porque es MUUUCHO más rápido)
    Mericherno.es - Web del servidor DayZ hecha con la inestimable ayuda de johnetrep :)
    http://www.fernandosalcedo.com

  13. #13
    Esto empieza a ser un vicio... Habitante Avatar de Doodleo
    Fecha de Ingreso
    25 abr, 11
    Ubicación
    Galicia (España)
    Mensajes
    1,329
    Poder de Reputación
    21
    Para mi es más rápido darle a Crear nuevo archivo, ponerle el nombre, le pongo el código desde ahí, guardo y listo jejejeje

    Voy a probar luego y os cuento, gracias!

  14. #14
    Esto empieza a ser un vicio... Habitante Avatar de Rabs
    Fecha de Ingreso
    16 jun, 11
    Ubicación
    Madrid
    Mensajes
    780
    Poder de Reputación
    17
    Ok hahaha, yo solo te recomiendo ese método hehe
    Mericherno.es - Web del servidor DayZ hecha con la inestimable ayuda de johnetrep :)
    http://www.fernandosalcedo.com

  15. #15
    Esto empieza a ser un vicio... Habitante Avatar de Rabs
    Fecha de Ingreso
    16 jun, 11
    Ubicación
    Madrid
    Mensajes
    780
    Poder de Reputación
    17
    El tutorial ya está actualizado con las cosillas que me quedaban. Espero no haberme equivocado :P
    Mericherno.es - Web del servidor DayZ hecha con la inestimable ayuda de johnetrep :)
    http://www.fernandosalcedo.com

Página 1 de 2 12 ÚltimoÚltimo

Temas Similares

  1. Crear formulario para enviar emails con EmailMeForm
    Por Doodleo en el foro Formularios
    Respuestas: 0
    Último Mensaje: 26/04/2011, 14:17
  2. Pregunta y planteamiento para los expertos
    Por victor5atodogas en el foro Off-Topic
    Respuestas: 2
    Último Mensaje: 08/03/2011, 10:04
  3. Ayuda con enviar Emails
    Por kaitoale100 en el foro Foro General
    Respuestas: 1
    Último Mensaje: 10/06/2008, 21:47

Etiquetas para este Tema

Permisos de Publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •