PHPMailerAutoload完成错误

时间:2015-07-24 21:30:22

标签: php smtp phpmailer

编辑:Jawish解释了为什么在提交我的代码时出现空白页面。我只是忘了回声。这已被标记为正确答案,即使它没有成功运行我的代码。我的问题很模糊,Jawish发现了一个可以帮助我处理错误报告的问题。如果我能找到代码的问题,我会发布另一个编辑。

我在使用以下代码发送信息时遇到一个小问题,无法登录我的Gmail帐户。一旦我运行我的表单并提交它,我就会显示一个空白页面。我试图找到某种错误,但我无法显示错误。我已按照this post的回答,但即使进行这些更改并添加代码也无法解释。这段代码应该运行邮件程序,一旦发送电子邮件,用户应该被重定向到“谢谢”'页面从未发生过。所以问题发生在列出的两个代码之一。奇怪的是这种用法起作用。我去度假然后回来,现在它没有工作。我确定我以某种方式搞砸了一些东西,但我对这些想法感到茫然。

感谢任何帮助。 (星号显示隐藏个人信息)

<?php

session_start();

require_once '../PHPMailer-master/PHPMailerAutoload.php';

if(isset($_POST['icon'])){


    $m = new PHPMailer();
    $m->isSMTP();
    $m->SMTPAuth = true;

    $m->Host = 'smtp.gmail.com';
    $m->Username = '*********@gmail.com';
    $m->Password = '****';
    $m->SMTPSecure = 'ssl';
    $m->Port = 465;

    $m->isHTML(true);

    $m->Subject = 'Contact form submitted';
    $m->Body = $_POST['icon'];

    $m->FromName = 'Contact';

    $m->AddAddress('********@gmail.com','***Name Here****');

    if($m->send()) {
        header('Location: contact_thanks.php');
        echo 'Message could not be sent.';
        echo 'Mailer Error: ' . $m->ErrorInfo;
        die();  
    } else {
        'Sorry, could not send email';
    }

} else {'something went wrong';}

?>

这是前面代码中引用的PHPMailerAutoload.php。

<?php

function PHPMailerAutoload($classname)
{
    //Can't use __DIR__ as it's only in PHP 5.3+
    $filename = dirname(__FILE__).DIRECTORY_SEPARATOR.'class.'.strtolower($classname).'.php';
    if (is_readable($filename)) {
        require $filename;
    }
}

if (version_compare(PHP_VERSION, '5.1.2', '>=')) {
    //SPL autoloading was introduced in PHP 5.1.2
    if (version_compare(PHP_VERSION, '5.3.0', '>=')) {
        spl_autoload_register('PHPMailerAutoload', true, true);
    } else {
        spl_autoload_register('PHPMailerAutoload');
    }
} else {
    /**
     * Fall back to traditional autoload for old PHP versions
     * @param string $classname The name of the class to load
     */
    function __autoload($classname)
    {
        PHPMailerAutoload($classname);
    }
}
?>

1 个答案:

答案 0 :(得分:1)

您在最后的其他块上缺少“echo”语句,因此您不会在这些分支上获得任何输出。

应该是:

    } else {
        echo 'Sorry, could not send email';
    }

} else {
    echo 'something went wrong';
}