PHPMailer 在本地主机上工作,但在服务器上工作,但不在服务器上工作
PHPMailer works on localhost but on but not on server
我正在尝试向某人发送 contents.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"');
}
?>
显示图表工作正常,在我测试了一些 echo's
之后,我发现页面在 gmail.php 中的第 $mail = new PHPMailer();
行之后停止了,请帮助我解决这个问题,谢谢!
如果在 new PHPMailer()
处失败,则可能无法加载库。检查邮件程序目录的路径,看起来是:
/mysrit/mailer/class.phpmailer.php
(注意开头/绝对)
或
mailer/class.phpmailer.php
(注意缺少开头/使路径相对)。
我建议制作图书馆 required。即:
require 'mailer/class.phpmailer.php';
或者如果它可能被加载多次:
require_once 'mailer/class.phpmailer.php';
这样脚本会在找不到邮件程序库时立即停止执行。
只需评论 $mail->IsSMTP();
..我遇到了同样的问题..在 localhost 上正常工作,在实时服务器上不工作..在我评论 $mail->IsSMTP();
之后这个,它工作正常..希望对你有帮助。
如果删除 $mail->IsSMTP()
,您将不会 使用 SMTP
!然后 PHPMailer 将使用内置的 mail()
函数,您的所有 SMTP
特定设置将被忽略!
我正在尝试向某人发送 contents.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"');
}
?>
显示图表工作正常,在我测试了一些 echo's
之后,我发现页面在 gmail.php 中的第 $mail = new PHPMailer();
行之后停止了,请帮助我解决这个问题,谢谢!
如果在 new PHPMailer()
处失败,则可能无法加载库。检查邮件程序目录的路径,看起来是:
/mysrit/mailer/class.phpmailer.php
(注意开头/绝对)
或
mailer/class.phpmailer.php
(注意缺少开头/使路径相对)。
我建议制作图书馆 required。即:
require 'mailer/class.phpmailer.php';
或者如果它可能被加载多次:
require_once 'mailer/class.phpmailer.php';
这样脚本会在找不到邮件程序库时立即停止执行。
只需评论 $mail->IsSMTP();
..我遇到了同样的问题..在 localhost 上正常工作,在实时服务器上不工作..在我评论 $mail->IsSMTP();
之后这个,它工作正常..希望对你有帮助。
如果删除 $mail->IsSMTP()
,您将不会 使用 SMTP
!然后 PHPMailer 将使用内置的 mail()
函数,您的所有 SMTP
特定设置将被忽略!