PHPMailer无法连接到SMTP主机

时间:2018-03-22 19:49:45

标签: php html smtp

我有这个发送电子邮件到电子邮件的表单。在localhost中工作正常,当我将其上传到主机时,它给了我以下错误。

  

无法访问文件:SMTP错误:无法连接到SMTP主机

email.php     

$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$portal = $_POST['portal'];
$piso = $_POST['piso'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$incidencia = $_POST['incidencia'];
$message = $_POST['message'];
$archivo = $_FILES['adjunto'];

require("archivosformulario/class.phpmailer.php");

$mail = new PHPMailer();

$mail->From     = $email;
$mail->FromName = $first_name; 
$mail->AddAddress("micrreo@gmail.com"); // Dirección a la que llegaran los mensajes.


$mail->WordWrap = 50; 
$mail->IsHTML(true);    
$mail->Subject  =  "Incidencia ";

$mail->Body     =  
    "Esto es un correo generado desde la web, si quiere mas informacion contacte con: correo@gmail.com \n<br". 
    "Nombre: $first_name \n<br />".    
    "Apellido: $last_name \n<br />".  
    "Portal: $portal \n<br />".
    "Piso: $piso \n<br />".
    "Email: $email \n<br />".
    "Telefono: $phone \n<br />".  
    "Incidencia: $incidencia \n<br />".
    "Mensaje: $message \n<br />";

$mail->AddAttachment($archivo['tmp_name'], $archivo['name']);



$mail->IsSMTP(); 
$mail->Host = "ssl://smtp.gmail.com:465";  // Servidor de Salida.
$mail->SMTPAuth = true; 
$mail->Username = "micorreo@gmail.com";  // Correo Electrónico
$mail->Password = "mipasswd"; // Contraseña


if ($mail->Send()){
    echo "<script>alert('bien');location.href ='javascript:history.back()';</script>";
}else{
    echo "<script>alert('Error al enviar el formulario')</script>";
    var_dump($_POST);
    exit();
}

?>
抱歉我的英语,我是西班牙语 非常感谢任何帮助我的人

1 个答案:

答案 0 :(得分:0)

这可能是由于主机的PHP版本缺乏SSL支持,因为它写在这里: PHPMailer: SMTP Error: Could not connect to SMTP host

因此,如果启用了extension = php_openssl.dll,请检查您的php.ini文件。

如果已禁用,请不要忘记在启用此扩展程序后重新启动Web服务器。

希望它会对你有所帮助。

在你回答之后编辑:

虽然我不确定它可以提供帮助,但您可以尝试替换以下行:

$mail->Host = "ssl://smtp.gmail.com:465";

按行:

$mail->SMTPSecure = 'ssl'; 
$mail->Host = "smtp.gmail.com"; 
$mail->Port = 465;

此外,如果它不适用于SSL,您可以尝试使用'tls'而不是'ssl',并且 用端口587替换端口465。

如果它仍然不起作用,您可以添加以下行,以便为您提供有关错误的更多信息:

$mail->SMTPDebug = 2;