New question

Question:

Date: 25-01-2015 13:25:22 (In Spanish)

¿Cómo enviar correos desde php?[Resolved]

Buenas noches como bien lo dice el titulo necesito saber como enviar correos desde php
¿Para qué?:
1.para poder enviar un enlace para recuperar una contraseña de usuario o enviar una contraseña generada.
2.para enviar un correo cada vez que se publique un registro (esto a los usuarios que se hayan suscrito a las categorías del registro publicado).
De antemano muchas gracias por sus respuestas.
Postdata: eh intentado localmente configurando mercury en xampp pero no me envia el correo.
Tags: Email - Mercury - PHP - PHPMailer - Question - Swift Mailer - XAMPP Votes: 3 - Answers: 5 - Views: 69 Share on: Google Facebook Twitter LinkedIn Link
 

Answers:

  • Date: 26-01-2015 03:57:43 La función mail() de PHP te puede funcionar pero necesitas tener configurado un servidor SMTP.
    Si vas a hacer uso de un SMTP externo entonces puedes usar PHPMailer que es el que yo uso personalmente porque es muy flexible.
      Votes: 0 - Link answer
     
  • Date: 26-01-2015 04:25:55 Muchas Gracias por tu respuesta!
    Ya he podido enviar correos con PhpMailer :D
    Me habia dado problemas porque tengo que activar el Acceso de aplicaciones menos seguras de la cuenta de google pero ya todo bien Gracias!
      Votes: 0 - Link answer
     
  • Date: 26-01-2015 05:06:31 Veo que ya has resuelto tu pregunta en el tiempo que preparaba mi respuesta, igual la dejo como ayuda para los futuros lectores.

    Lo primero que debes tener es un servidor SMTP, o sea, una cuenta de email para realizar los envíos. Puedes utilizar la cuenta que te provee tu servicio de hosting o una cuenta gratuita (como por ejemplo de Gmail).
    Los datos que necesitas de esta cuenta son:
    Email: xxxxx@xxxxxxx.xxx
    Password: ********
    URL servidor SMTP: xxxx.xxxxxxx.xxx
    Puerto servidor SMTP: (los habituales son 25 ó 465)
    Usa SSL: si/no

    Usando como disparador tu pregunta, aprovecho para decir que Mercury es un servicio que se instala junto a nuestro servidor apache y que hace de proxy entre tu servidor STMP y tu script PHP para que puedas utilizar la función mail() nativa de PHP. Si lo que quieres es tulizar Mercury aquí tienes un buen video de "Manuel J. Dávila" donde puedes ver como realizar todo el proceso.

    Configurar Mercury para el envío de emails




    Al margen de lo dicho, yo recomiendo utlizar Swift Mailer que es una librería que adjuntas a tu proyecto y te servirá para realizar envío de emails cuando no tienes disponible la función nativa mail() o cuando quieres tener un poco más de control en los envios.

    Esta librería se encuentra versionada en GitHub: Link al proyecto en GitHub
    La página oficila es: Link página oficial del proyecto
    Link de descarga directa al master de GitHub: swiftmailer-master.zip

    Lo que debes hacer es bajar el archivo "swiftmailer-master.zip", descompactarlo y solo copiar a tu proyecto la carpeta /lib/, todo lo demás no es necesario, y debes incluir en tu script el archivo "swift_required.php" para que las clases de SwifMailer se encuentren disponibles en PHP.
    require_once 'lib/swift_required.php';


    Ejemplo de envío de email con la librería Swift Mailer y una cuenta de Gmail:

    Nota: Gmail utiliza un SMTP con SSL, por lo que el puerto requerido es el 465, pero el puerto TCP/IP por defecto para el servicio de SMTP es el 25.

    <?php
    require_once 'lib/swift_required.php'; //verifica que la ruta sea la correcta
    
    //datos de configuración:
    $emailOrigen = 'xxxxxxxx@gmail.com'; //email desde donde se realizarán los envios
    $passwordEmailOrigenl = '********'; //la password del email
    $nombreEmailOrigen = 'PHPCentral.com'; //nombre a mostrar
    $puertoServidorSMTP = 465; //465 ó 25
    $urlServidorSMTP = 'smtp.googlemail.com'; //url del servidor SMTP
    $requiereSSLServidorSMTP = true; //true ó false
    
    //datos del email a ser enviado:
    $emailDestino = 'xxxxxx@xxxx.xxx'; //destinatarío del email
    $asuntoEmailDestino = "Hola PHPCentral.com"; //el asunto del email
    $cuerpoEmailDestino = '<html><body><p>Hola PHPCentral.com</p></html></body>'; //cuerpo html del email
    
    //proceso envío:
    if ($requiereSSLServidorSMTP) {
        //si requiere SSL debe ser especificado en el constructor:
        $transport = Swift_SmtpTransport::newInstance($urlServidorSMTP, $puertoServidorSMTP, 'ssl')
                ->setUsername($emailOrigen)
                ->setPassword($passwordEmailOrigenl);
    } else {
        $transport = Swift_SmtpTransport::newInstance($urlServidorSMTP, $puertoServidorSMTP)
                ->setUsername($emailOrigen)
                ->setPassword($passwordEmailOrigenl);
    }
    
    $objetoMailer = Swift_Mailer::newInstance($transport);
    $objetoEmail = Swift_Message::newInstance();
    $objetoEmail->setSubject($asuntoEmailDestino);
    $objetoEmail->setTo($emailDestino);
    $objetoEmail->setFrom(array($emailOrigen => $nombreEmailOrigen));
    $objetoEmail->setBody($cuerpoEmailDestino, 'text/html'); //body html
    
    if ($objetoMailer->send($objetoEmail) == 1) {
        echo 'enviado ok';
    } else {
        echo 'error de envío';
    }
    ?>


    Espero que mi respuesta les sea de ayuda, saludos y buen código!

    PD: sería bueno que alguien haga un ejemplo similar/completo con la librería PHPMailer https://github.com/PHPMailer/PHPMailer ya que esta tan difundida (aunque a mi no me ha dado buenos resultados).
      Votes: 4 - Link answer
     
  • Date: 26-01-2015 11:23:35 Perfecto amigos, justo ésto es lo que hiba a preguntar en estos dias, para confirmar una cuenta de mi servidor. :D   Votes: 0 - Link answer
     
  • Date: 26-01-2015 16:48:44 Buena respuesta, gracias por responderla igual a pesar de que justo la resolvieron. Yo siempre quise saber eso. En sub dominios gratuitos nunca podía usar la función mail(), ahora ya sé la causa   Votes: 0 - Link answer
     
To actively participate in the community first must authenticate, enter the system.Sign In