Páginas

Enviar un Correo desde PHP - autentificado con Gmail

Enviar un Correo desde PHP - autentificado con Gmail


Intro:

El código php que presento a continuación tiene todo lo que necesitas para enviar un correo electrónico desde PHP. Es muy sencillo de implementar en la página web, realmente lo que tienes es que colocar tus datos de tu cuenta Gmail, y luego decir a quien o quienes quieres enviar correos electrónicos.

Problema Función Mail()

Anteriormente para enviar un correo electrónico a cualquier persona se podía utilizar la función Mail() que proporcionaba PHP, con la cual con solo colocar el correo del destinatario y el mensaje, enviaba el e-mail. Pero con el paso del tiempo muchos desarrolladores, lo comenzaron a usar para spamear, o mandar publicidad y anuncios de empresas, bienes o servicios a los correos de los usuarios de Internet. Por ello Gmail,Hotmail, Yahoo y todos los hermanitos de ellos, tomaron la medida de que, tenias que decir que cuenta de correo enviaba la cuenta. En otras palabras para enviar un correo hay que decir primero quien eres.


CODIGO PHP:

Este ejemplo se loguea a una cuenta gmail:

<?php
//http://ve.php.net/stream_socket_enable_crypto
//http://www.phpbb.com/community/viewtopic.php?f=64&t=616835
// solucion para el error: Warning: stream_socket_enable_crypto() [streams.crypto]: this stream does not support SSL/crypto
// Instalar la extension en php5: Openssl


function cmd( $str, $report=true )
{
global $smtp;
$ret = fwrite( $smtp, $str."\r\n" );
if( $report === true )
fread( $smtp, 512 );
}



$smtp = fsockopen( "tcp://smtp.gmail.com", 587, $errno, $errstr );
if( ! $smtp )
die( "Lo sentimos, pero ha ocurrido un error:" );
fread( $smtp, 512 );
cmd( "EHLO {smtp.gmail.com}" );
cmd( "STARTTLS" );
stream_socket_enable_crypto( $smtp, true, STREAM_CRYPTO_METHOD_TLS_CLIENT );
//stream_socket_enable_crypto( $smtp, true, STREAM_CRYPTO_METHOD_SSLv2_CLIENT );
//stream_socket_enable_crypto( $smtp, true, STREAM_CRYPTO_METHOD_SSLv3_CLIENT);
//stream_socket_enable_crypto( $smtp, true, STREAM_CRYPTO_METHOD_SSLv23_CLIENT);
cmd( "EHLO {smtp.gmail.com}" );
cmd( "AUTH LOGIN" );

cmd( base64_encode( "nombre_tu_cuenta_gmail" ) );
cmd( base64_encode( "clave_detu_cuenta_gmail" ) );
cmd( "MAIL FROM: <nombre_tu_cuenta_gmail@gmail.com>" );
cmd( "RCPT TO: <destinatario@hotmail.com>" );
cmd( "DATA" );
cmd( "Date: ".date("r"), false );
cmd( "From: COLOCA TU NOMBRE nombre_tu_cuenta_gmail@gmail.com", false );
cmd( "To: destinatario@hotmail.com", false );
cmd( "Subject: TITULO DEL MENSAJE"."\n", false );
cmd("MENSAJE A ENVIAR AL DESTINATARIO", false );
cmd( "." );
cmd( "QUIT" );
fclose( $smtp );
?>