phpMailer仅适用于localhost

时间:2014-12-07 04:15:48

标签: php email localhost phpmailer

我是这个论坛的新手,还有一些关于编码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上工作正常。

2 个答案:

答案 0 :(得分:1)

你没有提到你是否检查过这个,但你的主机可能有一个阻止该端口连接的防火墙。如果它在本地工作并在将其上传到您的主机时停止工作,那肯定是可能的。如果他们授予您配置权限,请确保已启用到该端口的出站连接。您可能还想检查SMTP服务器是否完全返回了响应。这通常可以告诉你很多事情。

答案 1 :(得分:0)

也许你的本地服务器和远程服务器有不同的PHP版本,所以先检查一下

FILTER_VALIDATE_EMAIL

根据文档,过滤器验证仅适用于PHP版本(PHP 5&gt; = 5.2.0)。所以要确保你的版本是正确的。

还试试这个

在文件中注释此行,然后重试..我认为您没有使用它

// require'PHPMailerAutoload.php';