PHPMailer适用于localhost,但在服务器上但不在服务器上

时间:2015-01-05 13:59:12

标签: php xampp phpmailer

我正在尝试将content.html的邮件发送给某人,此代码在XAMPP上工作正常但在服务器上无效,只显示空白屏幕并最终没有发送邮件,我做错了什么?

gmail.php

 <?php
    include('/mailer/class.phpmailer.php');
    include('/mailer/class.smtp.php'); // optional, gets called from within class.phpmailer.php if not already loaded
    $hodemail = strtolower($branch)."hodofsrit@gmail.com";
    echo '1';
    $mail = new PHPMailer(); // create a new object
    $mail->IsSMTP(); // enable SMTP
    echo '2';
    $mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
    $mail->SMTPAuth = true; // authentication enabled
    $mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for GMail
    $mail->Host = "ssl://smtp.gmail.com";
    $mail->Port = 465; // or 587
    $mail->IsHTML(true);
    $mail->Username = "xxxxxxxxxx";
    $mail->Password = "xxxxxxxx";
    $mail->SetFrom("134g1a05a1@srit.ac.in");
    $mail->Subject = "Student Feedback ".$branch . " ".$yearandsem;
    $mail->Body = "hello, Here's the graph generated";
    $mail->msgHTML(file_get_contents('contents.html'), dirname(__FILE__));
    $mail->AddAddress($hodemail);
     if(!$mail->Send())
        {
            $error = $mail->ErrorInfo;
        header('Location:sendmail.php?errormsg=There was an error in sending email '.$error);
        }
        else
        {
        function redirect($url)
        {
        $string = '<script type="text/javascript">';
        $string .= 'window.location = "' . $url . '"';
        $string .= '</script>';
        echo $string;
        }
       redirect('sendmail.php?msg=Email Successfully sent to corresponding HOD!');
        }
    ?>  

send_mail.pgp

<?php 
session_start();
 if(isset($_SESSION['admin'])){
    $branch = $_POST['branch'];
$yearandsem = $_POST['yearandsem'];
 include 'displaygraphs.php';
 include'gmail.php';
 } 
else {
    header('location:index.php?msg="Login First"');
}
?>

displaygraphs工作正常,在我用一些echo's测试后,我发现页面在gmail.php中的行$mail = new PHPMailer();之后停止了,请帮我解决一下,谢谢你!

4 个答案:

答案 0 :(得分:18)

只是评论$mail->IsSMTP(); ..我有同样的问题..在 localhost 上它的工作和实时服务器不工作..之后我评论$mail->IsSMTP();这个,它的工作正常..希望如此可能对你有所帮助。

答案 1 :(得分:3)

如果您删除$mail->IsSMTP()将使用SMTP!然后,PHPMailer将使用内置的mail()函数,您的所有SMTP特定设置都将被忽略!

答案 2 :(得分:-2)

如果在new PHPMailer()失败,则可能无法加载库。检查邮件程序目录的路径,该目录看起来是:

/mysrit/mailer/class.phpmailer.php(注意开头/使其绝对)

mailer/class.phpmailer.php(注意缺少开头/使路径相对)。

我建议制作图书馆required。那就是:

require 'mailer/class.phpmailer.php';

或者是否可能多次加载:

require_once 'mailer/class.phpmailer.php';

这样,当脚本无法找到邮件程序库时,脚本将停止执行。

答案 3 :(得分:-3)

正如vani建议我删除了行$mail->IsSMTP();并且它在服务器上为我工作,但不是在xampp中,在xampp中你必须保留它。