2014-12-07 114 views
2

我在这里是新来的这个论坛和一个小编码的PHP新手。phpMailer只能在本地主机上工作

所以这里是主题,我使用phpMailer发送电子邮件。但它只适用于本地主机。我工作的很好,当我将项目上传到网络主机时,它立即停止正常发送。而我甚至没有改变一条线。

所以这里。

<?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 = '[email protected]'; 
$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('[email protected]', $_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; 

?>

它的工作原理perfecly罚款在本地主机上时。

+0

你的服务器是否有邮件服务器?你被允许使用? – ElefantPhace 2014-12-07 04:20:07

+0

什么是输出错误? – 2014-12-07 06:19:55

回答

1

您没有提及您是否检查过该设备,但可能您的主机具有阻止该端口连接的防火墙。如果它在本地工作并在将其上传到主机时停止工作,那肯定是一种可能性。如果他们为您提供访问权限,请确保已启用到该端口的出站连接。您可能还想检查SMTP服务器是否返回响应。这通常会告诉你很多有关发生的事情。

0

也许你的本地服务器和远程服务器有不同的PHP版本,所以要根据第一次检查,并也

FILTER_VALIDATE_EMAIL

筛选验证仅适用于PHP版本(PHP 5> = 5.2.0)文档。所以确保你的版本是正确的。

也试试这个

评论文件这一行,然后再试一次..我想你不使用它

//需要“PHPMailerAutoload.php”;

相关问题