我是这个论坛的新手,还有一些关于编码php的新手。
所以这是主题,我正在使用phpMailer发送电子邮件。但它只适用于localhost。我工作得很好,当我将项目上传到webhost时,它立即停止正常发送。我甚至没有换过一行。
所以这就是。
<?php
if(empty($_POST['name']) ||
empty($_POST['email']) ||
empty($_POST['phone']) ||
empty($_POST['message']) ||
!filter_var($_POST['email'],FILTER_VALIDATE_EMAIL))
{
echo "Nenhum argumento fornecido.";
return false;
}
require 'class.phpmailer.php';
require 'PHPMailerAutoload.php';
$mail = new PHPmailer();
$mail->setLanguage('pt');
$host = 'smtp.live.com';
$username = 'myemail@hotmail.com';
$password = 'mypassword';
$port = 587;
$secure = 'tls';
$from = $username;
$fromName = 'Pedido-'.$_POST['name'];
$mail->isSMTP();
$mail->Host = $host;
$mail->SMTPAuth = true;
$mail->Username = $username;
$mail->Password = $password;
$mail->Port = $port;
$mail->SMTPSecure = $secure;
$mail->From = $from;
$mail->FromName = $fromName;
$mail->addReplyTo($from, $fromName);
$mail->addAddress('toemail@gmail.com', $_POST['name']);
$mail->isHTML(true);
$mail->Charset = 'utf-8';
$mail->WordWrap = 70;
$mail->Subject = 'Envios do formulario';
$mail->Body = '<b>Nome:</b> '.$_POST['name'];
$mail->Body .= '<br><b>Responder para:</b> '.$_POST['email'];
$mail->Body .= '<br><b>Telefone:</b> '.$_POST['phone'];
$mail->Body .= '<br><b>Mensagem:</b> <br>'.$_POST['message'];
$mail->AltBody = '';
$send = $mail->Send();
return 0;
&GT;
在localhost上工作正常。
答案 0 :(得分:1)
你没有提到你是否检查过这个,但你的主机可能有一个阻止该端口连接的防火墙。如果它在本地工作并在将其上传到您的主机时停止工作,那肯定是可能的。如果他们授予您配置权限,请确保已启用到该端口的出站连接。您可能还想检查SMTP服务器是否完全返回了响应。这通常可以告诉你很多事情。
答案 1 :(得分:0)
也许你的本地服务器和远程服务器有不同的PHP版本,所以先检查一下
FILTER_VALIDATE_EMAIL
根据文档,过滤器验证仅适用于PHP版本(PHP 5&gt; = 5.2.0)。所以要确保你的版本是正确的。
还试试这个
在文件中注释此行,然后重试..我认为您没有使用它
// require'PHPMailerAutoload.php';