Foros del Web » Programando para Internet » PHP »

Enviar correo usando servidores de Google

Estas en el tema de Enviar correo usando servidores de Google en el foro de PHP en Foros del Web. Hola, buenas tardes, Tengo una duda, no puedo hacer funcionar un código para enviar correos desde una forma de contacto. Mi cliente tiene un plan ...
  #1 (permalink)  
Antiguo 25/09/2014, 16:27
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años
Puntos: 27
Enviar correo usando servidores de Google

Hola, buenas tardes,

Tengo una duda, no puedo hacer funcionar un código para enviar correos desde una forma de contacto. Mi cliente tiene un plan de correo de Google Apps y el proveedor de hosting de mi cliente modifico los registros MX para usar los servidores de Google.

Bueno, he buscado como hacer funcionar el script de envío de correo, pero no logro hacerlo. Estoy intentando con lo siguiente:

1. Formulario de envio (disculpen esa asquerosidad de código... lo hicieron en un programa que se llama Muse :/ )

Código HTML:
Ver original
  1. <form class="form-grp clearfix grpelem" id="widgetu3625" method="post" enctype="multipart/form-data" action="scripts/config-smtp.php"><!-- none box -->
  2.         <div class="fld-grp clearfix grpelem" id="widgetu3632" data-required="true"><!-- none box -->
  3.          <label class="fld-label actAsDiv clearfix grpelem" id="u3633-4" for="widgetu3632_input"><!-- content -->
  4.           <span class="actAsPara">Nombre:</span>
  5.          </label>
  6.          <span class="fld-input NoWrap actAsDiv clearfix grpelem" id="u3635-4"><!-- content --><input class="wrapped-input" type="text" spellcheck="false" id="widgetu3632_input" name="custom_U3632" tabindex="1"/><label class="wrapped-input fld-prompt" id="widgetu3632_prompt" for="widgetu3632_input"><span class="actAsPara">Introducir nombre</span></label></span>
  7.         </div>
  8.         <div class="fld-grp clearfix grpelem" id="widgetu3645" data-required="true" data-type="email"><!-- none box -->
  9.          <label class="fld-label actAsDiv clearfix grpelem" id="u3647-4" for="widgetu3645_input"><!-- content -->
  10.           <span class="actAsPara">Correo electrónico:</span>
  11.          </label>
  12.          <span class="fld-input NoWrap actAsDiv clearfix grpelem" id="u3648-4"><!-- content --><input class="wrapped-input" type="text" spellcheck="false" id="widgetu3645_input" name="Email" tabindex="2"/><label class="wrapped-input fld-prompt" id="widgetu3645_prompt" for="widgetu3645_input"><span class="actAsPara">Introducir correo electr.</span></label></span>
  13.         </div>
  14.         <div class="clearfix grpelem" id="u3638-4"><!-- content -->
  15.          <p>Enviando formulario...</p>
  16.         </div>
  17.         <div class="clearfix grpelem" id="u3637-4"><!-- content -->
  18.          <p>El servidor ha detectado un error.</p>
  19.         </div>
  20.         <div class="clearfix grpelem" id="u3650-4"><!-- content -->
  21.          <p>Formulario recibido.</p>
  22.         </div>
  23.         <input class="submit-btn NoWrap grpelem" id="u3631-17" type="submit" value="" tabindex="4"/><!-- state-based BG images -->
  24.         <div class="fld-grp clearfix grpelem" id="widgetu3626" data-required="false"><!-- none box -->
  25.          <label class="fld-label actAsDiv clearfix grpelem" id="u3629-4" for="widgetu3626_input"><!-- content -->
  26.           <span class="actAsPara">Mensaje:</span>
  27.          </label>
  28.          <span class="fld-textarea actAsDiv clearfix grpelem" id="u3628-4"><!-- content --><textarea class="wrapped-input" id="widgetu3626_input" name="custom_U3626" tabindex="3"></textarea><label class="wrapped-input fld-prompt" id="widgetu3626_prompt" for="widgetu3626_input"><span class="actAsPara">Escriba su mensaje</span></label></span>
  29.         </div>
  30.        </form>

2. Script PHP

Código PHP:

require('class.phpmailer.php');
require(
'class.smtp.php');

$nombre $_POST['custom_U3632'];
$email $_POST['Email'];
$mensaje $_POST['custom_U3626'];
 
$mail = new PHPMailer();

$mail->From $email;
$mail->FromName $nombre;
$mail->AddAddress("");

$mail->WordWrap 50;
$mail->IsHTML(true);
$mail->Subject "Esto es un correo de prueba";
$mail->MsgHTML(file_get_contents('correomaquetado.html'), dirname(ruta_al_archivo));
$mail->AltBody 'This is a plain-text message body';

$mail->IsSMTP();
$mail->SMTPDebug  0;
$mail->Host       'ssl://smtp.gmail.com:465';
$mail->Port       587;
$mail->SMTPSecure 'tls';
$mail->Mailer "smtp";
$mail->SMTPAuth   true;
$mail->Username   "[email protected]";
$mail->Password   "xxxxxxxxxxxx";


if(!
$mail->Send()) {
  echo 
"Error: " $mail->ErrorInfo;
} else {
  echo 
"Enviado!";

Sin embargo, cuando le doy enviar me marca "error" y obviamente no envía nada. No sé si tengo algo mal en la configuración, pero he estado checando varias guías y sólo difieren por muy poco u omiten algún paso.

¿Saben si debo hacer algo más? ¿Alguna configuración que me esté fallando aún?

De antemano, agradezco por su tiempo.

Saludos!!!
  #2 (permalink)  
Antiguo 25/09/2014, 16:30
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Enviar correo usando servidores de Google

Al menos podrías compartir el "error" completo que obtienes, ¿o tenemos que adivinar?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 25/09/2014, 16:56
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años
Puntos: 27
Respuesta: Enviar correo usando servidores de Google

Sólo aparece así la palabra: "error." No me dice nada más.

Aunque parece que esa es una instrucción de javascript que no estoy utilizando (no la utilizo porque deseche todo el javascript, no era funcional en lo que necesito). Dándole una inspección dice: "El servidor ha detectado un error."
  #4 (permalink)  
Antiguo 25/09/2014, 17:01
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Enviar correo usando servidores de Google

Es decir, la siguiente linea:
Código PHP:
Ver original
  1. echo "Error: " . $mail->ErrorInfo;

¿Muestra sólo "error"?

Eso no es nada útil para entender el problema real, necesitas depurar hasta obtener un mensaje de error más claro al respecto.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 25/09/2014, 17:08
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años
Puntos: 27
Respuesta: Enviar correo usando servidores de Google

No, revisando la palabra "error." es de una instrucción de javascript. No es la de:

Código PHP:
echo "Error: " $mail->ErrorInfo
Esa instrucción de javascript ya la deseche, no me sirve, la hicieron con el mismo Muse pero nunca se creó un script real que envíe la información al servidor.

El script que está siendo utilizado es el que mencioné líneas arriba. En ese caso no me manda error, sólo hace como que "funciona" pero los correos nunca llegan.

Quizá si funcione el código, pero el problema sea en el servidor, no lo sé, es lo que trato de averiguar, cabe señalar que los de soporte de hosting dicen que el problema no es de su lado, que intente con otro código (he intentado con muchos y este al parecer debía ser el más funcional).

Saludos!!
  #6 (permalink)  
Antiguo 25/09/2014, 19:33
Avatar de xalupeao  
Fecha de Ingreso: mayo-2008
Ubicación: Santiago, Chile
Mensajes: 749
Antigüedad: 16 años
Puntos: 12
Respuesta: Enviar correo usando servidores de Google

Creo que

Código PHP:
Ver original
  1. $mail->Host       = 'ssl://smtp.gmail.com:465';

deberia ser

Código PHP:
Ver original
  1. $mail->Host       = 'smtp.gmail.com';

Ver la documentación oficial http://phpmailer.worxware.com/?pg=examplebgmail
__________________
Hosting en Chile en Silverhost - La solución en Hosting en Chile.
  #7 (permalink)  
Antiguo 26/09/2014, 08:10
 
Fecha de Ingreso: septiembre-2008
Mensajes: 43
Antigüedad: 15 años, 7 meses
Puntos: 4
Respuesta: Enviar correo usando servidores de Google

Estás tratando de conectarte a dos puertos diferentes que trabajan con protócolos diferentes.

SSL = puerto 465
TLS = puerto 587

El host debería ser así:
Código PHP:
$mail->Host       'smtp.gmail.com'
Si el puerto es 587:
Código PHP:
$mail->SMTPSecure 'tls'
Si el puerto es 465:
Código PHP:
$mail->SMTPSecure 'ssl'
  #8 (permalink)  
Antiguo 26/09/2014, 09:03
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 19 años
Puntos: 27
Respuesta: Enviar correo usando servidores de Google

Hola santi-, gracias por responder.

Estoy revisando la documentación, pero me quedan algunas dudas:

Que diferencias hay entre:

Código PHP:
$mail->Host       "mail.yourdomain.com"// SMTP server 
con esta:

Código PHP:
$mail->Host       "smtp.gmail.com";      // sets GMAIL as the SMTP server 
en la primera, ¿debería ir mi dominio original, por así decirlo? Por ejemplo, mail.miempresa.com?

y si es así, aquí debería ir:

Código PHP:
$mail->SetFrom('[email protected]''First Last'); 
así:

Código PHP:
$mail->SetFrom('[email protected]''Mi nombre'); 
y por último, en estas líneas:

Código PHP:
$mail->MsgHTML($body);
$address "[email protected]";
$mail->AddAddress($address"John Doe"); 
deberían ser declaradas con la información que traigo de mi formulario, no? por ejemplo:

Código PHP:
$nombre $_POST['custom_U3632']; 
$email $_POST['Email']; 
$mensaje $_POST['custom_U3626']; 

$mail->MsgHTML($mensaje);
$address $email;
$mail->AddAddress($address$nombre); 
porque lo hago de esa forma y sigue sin llegar el correo a su destino :(

Etiquetas: correo, formulario, google, html, registro, servidores, usando
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:56.