2 min de lectura

El envio de correos en PHP se puede lograr de manera muy sencilla por medio de la función mail() la cual trabaja con el SMTP que se tenga configurado en el servidor PHP. Recibe tres parámetros de manera obligada y otros dos parámetros que podemos colocar opcionalmente. Devuelve true si se envió el mensaje correctamente y false en caso contrario.

Parámetros necesarios en todos los casos:

  • Destinatario: la dirección de correo o direcciones de correo que han de recibir el mensaje. Si incluimos varias direcciones debemos separarlas por una coma.
  • Asunto: para indicar una cadena de caracteres que queremos que sea el asunto del correo electrónico a enviar.
  • Cuerpo: el cuerpo del mensaje, lo que queremos que tenga escrito el correo

Nota: Para el envío de correo mediante PHP es necesario que este disponga de una correcta configuración.

Si nuestro sitio está en un servidor de un proveedor de hosting seguramente ya hayan configurado PHP para el envío de mails. Si estamos trabajando en un servidor propio, sí tendremos que configurar PHP.

PHP se configura en el archivo php.ini, donde debemos especificar datos como el servidor de correo saliente que debe de utilizar PHP para transferir los mensajes.

Dentro del php.ini, debemos buscar el epígrafe [mail function]. Dependiendo de nuestro sistema deberemos configurar de una manera u otra.

Se puede lograr también la configuración durante la configuración del script por medio de la función ini_set() indicando el servidor smtp a utilizar y el puerto.

Si usted no lográ realizar la configuración de su servidor para envio de correos con PHP, o el hosting que utiliza no le permite el uso de la función, entonces puede utilizar otras bibliotecas que le permitirán realizar el envio de correo. Esta es una guía para utilizar PHPMailer.
¿Te gustó este artículo?

Si te gustó este artículo, te ha servido o aprendiste algo nuevo; compártelo en tus redes sociales o invítame un cafe.

Líder técnico en equipos de desarrollo de software. Profesor de Desarrollo Web en la Universidad de Guadalajara. Emprendedora. Fundadora y CTO de CORB.mx. Ponente y tallerista. Colaboradora en proyectos de software libre y Open Source. Comprometida con la comunidad y la industria de la tecnología. Enfocada en el empoderamiento de las mujeres.

10 COMENTARIOS

  1. Hola Michelle, tenía una web que manda correos de confirmación a usuarios alojada en un servidor Windows 2008. La he pasado a un Windows server 2012 r2 standart con Plesk 12.5 y ahora la función mail() solo manda correos a los dominios que tengo alojados en el mismo servidor, al resto no pero no marca ningún error.

    Un saludo

  2. Hola!! Te comento, que cree un Formulario de Consultas tanto con HTML y PHP hasta aca todo bien. El formulario hace la solicitud el Docente esta solicitud la recepciona un Operador, ahora este Operador quiere que cuando le llegue a El la solicitud también le vaya una copia a su ayudante, se puede hacer? Si me podrian ayudar se lo estaría agradeciendo, paso PHP:
    <?php

    if(isset($_POST['email']))
    {

    // Debes editar las próximas dos líneas de código de acuerdo con tus preferencias
    $email_to = "CORREOOPERADOR@SERVIDORr";
    $email_subject = "** Reserva Proyectores Docentes **";

    // Aquí se deberían validar los datos ingresados por el usuario
    if(!isset($_POST['first_name']) ||
    !isset($_POST['last_name']) ||
    !isset($_POST['aula']) ||
    !isset($_POST['dia']) ||
    !isset($_POST['horario']) ||
    !isset($_POST['carrera']) ||
    !isset($_POST['email']) ||
    !isset($_POST['telephone']) ||
    !isset($_POST['comments'])) {

    echo "Ocurrió un error y el formulario no ha sido enviado. “;
    echo “Por favor, vuelva atrás y verifique la información ingresada”;
    die();
    }

    $email_message = “Detalles del formulario de contacto:\n\n”;
    $email_message .= “Docente: ” . $_POST[‘first_name’] . “\n”;
    $email_message .= “Elemento: ” . $_POST[‘last_name’] . “\n”;
    $email_message .= “Aula: ” . $_POST[‘aula’] . “\n”;
    $email_message .= “Día: ” . $_POST[‘dia’] . “\n”;
    $email_message .= “Horario: ” . $_POST[‘horario’] . “\n”;
    $email_message .= “Carrera: ” . $_POST[‘carrera’] . “\n”;
    $email_message .= “E-mail: ” . $_POST[’email’] . “\n”;
    $email_message .= “Teléfono: ” . $_POST[‘telephone’] . “\n”;
    $email_message .= “Mensaje: ” . $_POST[‘comments’] . “\n\n”;

    // Ahora se envía el e-mail usando la función mail() de PHP
    $headers = ‘From: ‘.$email_from.”\r\n”.
    ‘Reply-To: ‘.$email_from.”\r\n” .
    ‘X-Mailer: PHP/’ . phpversion();
    @mail($email_to, $email_subject, $email_message, $headers);

    echo “¡El formulario se ha enviado con éxito!”;

    }
    ?>
    –Inicio–

    • Para enviar a varios correos, solo debes concatenar los correos electrónicos con coma (,).

      $email_to = "CORREOOPERADOR@SERVIDOR , Correo2@servidor";

  3. Una pregunta, instale Ubuntu Server 12.04 con Cherokee y PHP5, que debo de configurar en el archivo php.ini, el cual esta en mi caso en /etc/php5/cgi/php.ini, en la sección de “mail function” configure SMTP = y en smtp_port = 587 pero aún así no fucniona la función mail de php, sabes que más se debe de configurar? Saludos y gracias.

    • La función mail de PHP utiliza un servidor SMTP que debes tener instalado.
      Revisa que tengas un servidor de correo, de lo contrario, te recomienda instalar postfix

    • Para hacer un formulario debes:
      1. Crear un formulario con HTML
      2. Setear el action a un archivo php que procese la información
      3. Tu archivo php debe procesar la información y enviarla a guardar a una base de datos
      4. Crear otro php que haga la lectura de los comentarios y los muestre arriba de tu formulario.

      O por el contrario puedes revisar DISQUS que es un servicio que insertas en tu página para el manejo de comentarios.

  4. Muchas gracias por la info, tengo una consulta, en el php.ini si configuras un servidor de correo externo (no localhost), como pones la contraseña de la cuenta?? desde ya muchas gracias

Deja tus comentarios

This site uses Akismet to reduce spam. Learn how your comment data is processed.