我有这个发送电子邮件到电子邮件的表单。在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();
}
?>
抱歉我的英语,我是西班牙语
非常感谢任何帮助我的人
答案 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;