PHPMailer - gmail smtp no funciona correctamente

yo suelo SMTP de Gmail por formulario de contacto en mi sitio. (Script PHPMailer https://github.com/PHPMailer/PHPMailer)
mi codigo es:

<?php
include "classes/class.phpmailer.php"; // include the class name
$mail = new PHPMailer(); // create a new object
$mail->IsSMTP(); // enable SMTP
$mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; // authentication enabled
$mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for GMail
$mail->Host = "smtp.gmail.com";
$mail->Port = 465; // or 587
$mail->IsHTML(true);
$mail->Username = "main@gmail.com";
$mail->Password = "xxxxxxxxxx";
$mail->SetFrom("another@gmail.com");
$mail->addReplyTo("another@gmail.com");
$mail->Subject = "Your Gmail SMTP Mail";
$mail->Body = "Hi, your first SMTP mail via gmail server has been received.";
$mail->AddAddress("main@gmail.com");
 if(!$mail->Send()){
  echo "Mailer Error: " . $mail->ErrorInfo;
}
else{
    echo "Message has been sent";
}
?>

Funciona pero tengo dos problemas:

  1. lo puse $mail->SetFrom("another@gmail.com");
    pero en mi show de gmail from: main@gmail.com

  2. lo puse $mail->addReplyTo("another@gmail.com");
    pero en mi Gmail cuando hago clic en el botón de reproducción, el correo electrónico se reproduce en main@gmail.com
    mi codigo es

preguntado el 02 de diciembre de 13 a las 19:12

¿Por qué estás usando "principal" en el script? $mail->Username = "main@gmail.com";? -

este es un correo electrónico que los correos electrónicos deben enviar desde mi sitio (este no es un correo electrónico real que uso solo por ejemplo) $mail->Username = "main@gmail.com"; es el nombre de usuario para conectar gmail smtp.another@gmail.com es un correo electrónico que el usuario ingresa en el formulario de contacto -

¿Te pertenece "main@gmail.com"? -

3 Respuestas

Google no le permite enviar correo en nombre de otro usuario [también conocido como "suplantación"] a menos que se le haya permitido explícitamente. Si no se le ha permitido, volverá a escribir la dirección a la dirección de la cuenta de envío.

Para agregar una cuenta, inicie sesión en Gmail y vaya a Configuración> Cuentas> Enviar correo como... cuando agregue una dirección aquí, Gmail enviará un mensaje a esa dirección solicitando confirmación para permitirle enviar correo en su nombre.

Respondido el 02 de diciembre de 13 a las 19:12

Tengo muchos visitantes que usan el formulario de contacto con varios correos electrónicos: user2511140

@ user2511140 bueno, puede convencer a Gmail de que deje de enviar correos electrónicos correctamente, deje de suplantar las direcciones de correo electrónico de otras personas o use otro proveedor de SMTP. - Sammitch

Encontré mi respuesta. en tu Gmail ve a

setting ->accounts ->Send mail as

haga clic en Agregar otra dirección de correo electrónico de su propiedad en una nueva ventana ingrese una nueva dirección de correo electrónico (ejemplo si su gmail es yourmail@gmail.com debes entrar your.mail@gmail.com) o (si su dirección de gmail tiene un punto, debe cambiar la posición del punto. Por ejemplo, si su dirección de gmail es yo.urmail@gmail.com debes entrar yourma.il@gmail.com)
no olvides desmarcar Tratar como un alias.
haga clic en el siguiente paso.
enter image description here

volver a setting ->accounts ->Send mail as
hacer un nuevo correo electrónico como predeterminado
comprobar Reply from the same address the message was sent to
¡todo listo!
cambio código uso nuevos códigos.
enter image description here
ahora mostrar desde mi sitio

enter image description here
ahora, cuando hace clic en el botón de reproducción, muestra la reproducción en el correo electrónico del usuario
enter image description here

<?php
include "classes/class.phpmailer.php"; // include the class name
$mail = new PHPMailer(); // create a new object
$mail->IsSMTP(); // enable SMTP
$mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; // authentication enabled
$mail->SMTPSecure = 'tls'; // secure transfer enabled REQUIRED for GMail
$mail->Host = "smtp.gmail.com";
$mail->Port = 587; // or 587
$mail->IsHTML(true);
$mail->Username = "yourmail@gmail.com"; 
$mail->Password = "xxxxxxxxx";
$mail->addReplyTo("useremail@gmail.com","user");
$mail->SetFrom("useremail@gmail.com","My Site");
$mail->Subject = "Your Gmail SMTP Mail";
$mail->Body = "Hi, your first SMTP mail via gmail server has been received.";
$mail->AddAddress("yourmail@gmail.com");
 if(!$mail->Send()){
  echo "Mailer Error: " . $mail->ErrorInfo;
}
else{
    echo "Message has been sent";
}
?>

Respondido el 03 de diciembre de 13 a las 11:12

Confirmo que esto funciona muy bien, pero no puedo votar porque no tengo suficiente reputación para usar el sistema como debería. - Alejandro Martini

Es más sencillo poner el ancla con mailto al final del texto del correo electrónico, por ejemplo:

<h4><a href="mailto:some@one.com"> Click to answer </a> </h4>

Cuando el usuario hace clic en este ancla, se abrirá una ventana emergente con la dirección de correo electrónico correcta en el campo de envío.

Respondido el 29 de junio de 15 a las 15:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.