enviar - php mail smtp
PHPMailer: Error SMTP: no se pudo conectar al host SMTP (9)
¿existe mail.exampleserver.com ??? , si no, intente con el siguiente código (debe tener una cuenta de Gmail)
$mail->SMTPSecure = "ssl";
$mail->Host=''smtp.gmail.com'';
$mail->Port=''465'';
$mail->Username = ''[email protected]''; // SMTP account username
$mail->Password = ''your gmail password'';
$mail->SMTPKeepAlive = true;
$mail->Mailer = "smtp";
$mail->IsSMTP(); // telling the class to use SMTP
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->CharSet = ''utf-8'';
$mail->SMTPDebug = 0;
He usado PHPMailer en varios proyectos, pero ahora estoy atascado. Me da el error:
Error SMTP: no se pudo conectar al host SMTP.
¡He intentado enviar un correo electrónico desde Thunderbird y funciona! Pero no a través de PHPMailer ... Estas son las configuraciones de Thunderbird:
Nombre del servidor: mail.exampleserver.com
Puerto: 587
Nombre de usuario: [email protected]
Autenticación segura: no
Seguridad de conexión: STARTTLS
Los comparé con el servidor en mi último proyecto donde utilicé PHPMailer y fueron:
Nombre del servidor: mail.exampleserver2.com
Puerto: 465
Nombre de usuario: [email protected]
Autenticación segura: no
Seguridad de conexión: SSL / TLS
Mi código php es:
$mail = new PHPMailer();
$mail->IsSMTP(); // send via SMTP
$mail->Host = SMTP_HOST; // SMTP servers
$mail->Port = SMTP_PORT; // SMTP servers
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Username = SMTP_USER; // SMTP username
$mail->Password = SMTP_PASSWORD; // SMTP password
$mail->From = MAIL_SYSTEM;
$mail->FromName = MAIL_SYSTEM_NAME;
$mail->AddAddress($aSecuredGetRequest[''email'']);
$mail->IsHTML(true); // send as HTML
Donde estoy equivocado?
Como estas preguntas aparecen en Google, me gustaría compartir aquí mi solución para el caso en que PHP acaba de actualizarse a la versión 5.6 (que tiene un comportamiento SSL más estricto).
La wiki de PHPMailer tiene una sección sobre esto:
https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting#php-56-certificate-verification-failure
La solución sugerida es incluir el siguiente fragmento de código:
$mail->SMTPOptions = array(
''ssl'' => array(
''verify_peer'' => false,
''verify_peer_name'' => false,
''allow_self_signed'' => true
)
);
Esto debería funcionar para PHPMailer 5.2.10 (y superior).
Nota: ¡ Obviamente, y también como se sugiere en esa wiki, esta debería ser una solución temporal!
La solución correcta para esto es reemplazar el certificado no válido, mal configurado o autofirmado por uno bueno.
Dado que se trata de un error popular, consulte la Wiki de PHPMailer para la resolución de problemas.
También esto funcionó para mí
$mailer->Port = ''587'';
El código seguido funcionó para mí:
$mail = new PHPMailer(true);
$mail->isSMTP();// Set mailer to use SMTP
$mail->CharSet = "utf-8";// set charset to utf8
$mail->SMTPAuth = true;// Enable SMTP authentication
$mail->SMTPSecure = ''tls'';// Enable TLS encryption, `ssl` also accepted
$mail->Host = ''smtp.gmail.com'';// Specify main and backup SMTP servers
$mail->Port = 587;// TCP port to connect to
$mail->SMTPOptions = array(
''ssl'' => array(
''verify_peer'' => false,
''verify_peer_name'' => false,
''allow_self_signed'' => true
)
);
$mail->isHTML(true);// Set email format to HTML
$mail->Username = ''Sender Email'';// SMTP username
$mail->Password = ''Sender Email Password'';// SMTP password
$mail->setFrom(''[email protected]'', ''John Smith'');//Your application NAME and EMAIL
$mail->Subject = ''Test'';//Message subject
$mail->MsgHTML(''HTML code'');// Message body
$mail->addAddress(''User Email'', ''User Name'');// Target email
$mail->send();
En mi caso, fue la falta de soporte SSL en PHP lo que dio este error.
Así que habilité la extensión = php_openssl.dll
$mail->SMTPDebug = 1;
también insinuado hacia esta solución.
Actualización 2017
$mail->SMTPDebug = 2;
, consulte: https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting#enabling-debug-output
Tu problema es muy probablemente esto
Seguridad de conexión: STARTTLS Seguridad de conexión: SSL / TLS
Esos son dos protocolos diferentes, ¿está utilizando el correcto? Cualquiera que sea el que esté usando en Thunderbird necesita ser utilizado.
Intenta configurar la variable:
// if you''re using SSL
$mail->SMTPSecure = ''ssl'';
// OR use TLS
$mail->SMTPSecure = ''tls'';
Tuve el mismo problema y fue porque PHPMailer se dio cuenta de que el servidor soportaba STARTTLS, por lo que intentó actualizar automáticamente la conexión a una conexión cifrada. Mi servidor de correo está en la misma subred que el servidor web dentro de mi red, que está detrás de nuestros firewalls de dominio, por lo que no estoy demasiado preocupado por el uso de encriptación (además, los correos electrónicos generados no contienen datos confidenciales).
Entonces, lo que hice e hice fue cambiar el SMTPAutoTLS a falso en el archivo class.phpmailer.php.
/**
* Whether to enable TLS encryption automatically if a server supports it,
* even if `SMTPSecure` is not set to ''tls''.
* Be aware that in PHP >= 5.6 this requires that the server''s certificates are valid.
* @var boolean
*/
public $SMTPAutoTLS = false;
Tuve un problema similar y me di cuenta de que era la directiva de configuración de openssl.cafile
en php.ini
que debía establecerse para permitir la verificación de pares seguros. Simplemente configúralo en la ubicación de un archivo de autoridad de certificación como el que puedes obtener en http://curl.haxx.se/docs/caextract.html .
Esta directiva es nueva a partir de PHP 5.6, así que esto me pilló desprevenido al actualizar desde PHP 5.5.
Tuve un problema similar. Instalé PHPMailer versión 1.72 que no está preparado para administrar conexiones SSL. La actualización a la última versión resolvió el problema.