为什么 phpmailer 不向我的域邮件服务器发送邮件
Why phpmailer is not sending mail to my domain mail server
I'm trying to send mail to my domain mail server:
I used a try{} catch(){} to detect if there is any error, but surprisingly, there isn't any error.
<?php
function Redirect_to($New_Location){
header("Location:" . $New_Location);
exit;
}
if(isset($_POST['Submitenq'])){
require('phpmailer/PHPMailerAutoload.php');
define ('GUSER','courses@cadcentreju.org');
define ('GPWD','mymailpass');
$recever1 = 'courses@cadcentreju.org';
$enq_name = $_POST["enq_name"];
$enq_email = $_POST["enq_email"];
$enq_phone = $_POST["enq_phone"];
$enq_message = $_POST["enq_message"];
date_default_timezone_set("Asia/Kolkata");
$CurrentTime = time();
$DateTime = strftime("%B-%d-%Y %H:%M:%S",$CurrentTime);
if(empty($enq_name) || empty($enq_email) || empty($enq_phone) || empty($enq_message)){
Redirect_to("index.php?error=1");
}else{
$mail = new PHPMailer();
try{
$mail->IsSMTP();
$mail->Mailer = "smtp";
// $mail->SMTPDebug = 2;
$mail->SMTPAuth = TRUE;
$mail->SMTPSecure = "ssl";
$mail->Port = 465;
$mail->Host = "mail.supremecluster.com";
// $mail->CharSet = "UTF-8";
$mail->Username = GUSER;
$mail->Password = GPWD;
$mail->isHTML(true);
$mail->setFrom($enq_email,$enq_name);
$mail->addAddress($recever1);
$mail->Subject = 'Enquery Mail from - '. $enq_name;
$mail->Body = '<table class="table" cellspacing="0">
<thead>
<tr>
<th colspan="2">Enquery Mail from - '. $enq_name .'</th>
</tr>
</thead>
<tbody>
<tr>
<td colspan="2">'. '<p>Dear Sir / Madam, I have some enqueries as follows :</p></br>' .'</td>
</tr>
<tr>
<td>Email:</td>
<td>'. $enq_email .'</td>
</tr>
<tr>
<td>Phone No:</td>
<td>'. $enq_phone .'</td>
</tr>
<tr>
<td>City:</td>
<td>'. $sendercity .'</td>
</tr>
<tr>
<td>Message:</td>
<td>'. $enq_message .'</td>
</tr>
<tr>
<td>Date of Enquery:</td>
<td>'. $DateTime .'</td>
</tr>
</tbody>
</table>';
$mail->send();
$success_msg = "Your Message Sent Successfully: ";
}catch(phpmailerException $e){
echo $e->errorMessage();
}catch(Exception $e){
echo $e->getMessage();
}
}
}
?>
<?php include 'header.php'; ?>
<div style="height:50vh;margin-top: 268px; background:#ddd;" class="d-flex justify-content-center align-items-center">
<?php
if(isset($success_msg)){
?>
<div class="alert alert-success" role="alert">
<?php
echo $success_msg . $enq_name;
?>
</div>
<?php
}else{
?>
<div class="alert alert-danger" role="alert">
<?php
echo "Something went wrong";
?>
</div>
<?php
}
?>
</div>
<?php include 'footer.php'; ?>
It's showing me that the email sent successfully, but I'm not getting
any mail.
我联系了我的服务器求助热线,他们说某些 IP 被阻止了。但现在我已经允许来自 CPanel 的这些 IP。但是邮件还是发不出去
我真的需要帮助:)
感谢您抽出时间阅读。
PHPMailer 默认情况下不会抛出异常——您必须通过将 true
传递给构造函数来请求它们,如 $mail = new PHPMailer(true);
中那样。否则,您必须检查 send()
等方法的 return 值,以确定它们是否有效。
错误存储在 ErrorInfo
属性 – 请参阅 any of the code examples provided with PHPMailer 了解如何正确处理错误。
您还可以设置 $mail->SMTPDebug = 2;
以查看您的邮件服务器在说什么。除此之外,请阅读 the PHPMailer troubleshooting guide。
我的最终工作代码是:
function Redirect_to($New_Location){
header("Location:" . $New_Location);
exit;
}
if(isset($_POST['Submitenq'])){
require('phpmailer/PHPMailerAutoload.php');
define ('GUSER','courses@cadcentreju.org');
define ('GPWD','mailpass');
$recever1 = 'courses@cadcentreju.org';
$enq_name = $_POST["enq_name"];
$enq_email = $_POST["enq_email"];
$enq_phone = $_POST["enq_phone"];
$enq_message = $_POST["enq_message"];
date_default_timezone_set("Asia/Kolkata");
$CurrentTime = time();
$DateTime = strftime("%B-%d-%Y %H:%M:%S",$CurrentTime);
if(empty($enq_name) || empty($enq_email) || empty($enq_phone) || empty($enq_message)){
Redirect_to("index.php?error=1");
}else{
$mail = new PHPMailer(true);
try{
$mail->IsSMTP();
$mail->Mailer = "smtp";
// $mail->SMTPDebug = 2;
$mail->SMTPAuth = TRUE;
$mail->SMTPSecure = "none";
$mail->Port = 25;
$mail->Host = "mail.supremecluster.com";
// $mail->CharSet = "UTF-8";
$mail->Username = GUSER;
$mail->Password = GPWD;
$mail->isHTML(true);
$mail->setFrom($enq_email,$enq_name);
$mail->From = GUSER;
$mail->FromName = $enq_name;
$mail->addAddress($recever1);
$mail->Subject = 'Enquiry Mail from - '. $enq_name;
$mail->Body = '<table class="table" cellspacing="0">
<thead>
<tr>
<th colspan="2">Enquiry Mail from - '. $enq_name .'</th>
</tr>
</thead>
<tbody>
<tr>
<td colspan="2">'. '<p>Dear Sir / Madam, I have some enquiries. My Details are as follows :</p></br>' .'</td>
</tr>
<tr>
<td>Email:</td>
<td>'. $enq_email .'</td>
</tr>
<tr>
<td>Phone No:</td>
<td>'. $enq_phone .'</td>
</tr>
<tr>
<td>Message:</td>
<td>'. $enq_message .'</td>
</tr>
<tr>
<td>Date and TIME of Enquery:</td>
<td>'. $DateTime .'</td>
</tr>
</tbody>
</table>';
$mail->send();
$success_msg = "Your Message Sent Successfully: ";
}catch(phpmailerException $e){
echo $e->errorMessage();
}catch(Exception $e){
echo $e->getMessage();
}
我决定从我自己的服务器而不是 Gmail 服务器发送邮件:
所以我改变了:
$mail->SMTPSecure = "ssl";
至
$mail->SMTPSecure = "none";
最重要的是要记住:
$mail->Username = GUSER;
和
$mail->From = GUSER;
必须相同
和
此外,
我们必须将 true 传递给构造函数:
$mail = new PHPMailer(true)
// Argument true in constructor enables exceptions
转到您的 Gmail 帐户 -> 安全
找到“访问不太安全的应用程序”。打开它并再次 运行 您的 PHP 文件。
应该发送邮件了。
I'm trying to send mail to my domain mail server: I used a try{} catch(){} to detect if there is any error, but surprisingly, there isn't any error.
<?php
function Redirect_to($New_Location){
header("Location:" . $New_Location);
exit;
}
if(isset($_POST['Submitenq'])){
require('phpmailer/PHPMailerAutoload.php');
define ('GUSER','courses@cadcentreju.org');
define ('GPWD','mymailpass');
$recever1 = 'courses@cadcentreju.org';
$enq_name = $_POST["enq_name"];
$enq_email = $_POST["enq_email"];
$enq_phone = $_POST["enq_phone"];
$enq_message = $_POST["enq_message"];
date_default_timezone_set("Asia/Kolkata");
$CurrentTime = time();
$DateTime = strftime("%B-%d-%Y %H:%M:%S",$CurrentTime);
if(empty($enq_name) || empty($enq_email) || empty($enq_phone) || empty($enq_message)){
Redirect_to("index.php?error=1");
}else{
$mail = new PHPMailer();
try{
$mail->IsSMTP();
$mail->Mailer = "smtp";
// $mail->SMTPDebug = 2;
$mail->SMTPAuth = TRUE;
$mail->SMTPSecure = "ssl";
$mail->Port = 465;
$mail->Host = "mail.supremecluster.com";
// $mail->CharSet = "UTF-8";
$mail->Username = GUSER;
$mail->Password = GPWD;
$mail->isHTML(true);
$mail->setFrom($enq_email,$enq_name);
$mail->addAddress($recever1);
$mail->Subject = 'Enquery Mail from - '. $enq_name;
$mail->Body = '<table class="table" cellspacing="0">
<thead>
<tr>
<th colspan="2">Enquery Mail from - '. $enq_name .'</th>
</tr>
</thead>
<tbody>
<tr>
<td colspan="2">'. '<p>Dear Sir / Madam, I have some enqueries as follows :</p></br>' .'</td>
</tr>
<tr>
<td>Email:</td>
<td>'. $enq_email .'</td>
</tr>
<tr>
<td>Phone No:</td>
<td>'. $enq_phone .'</td>
</tr>
<tr>
<td>City:</td>
<td>'. $sendercity .'</td>
</tr>
<tr>
<td>Message:</td>
<td>'. $enq_message .'</td>
</tr>
<tr>
<td>Date of Enquery:</td>
<td>'. $DateTime .'</td>
</tr>
</tbody>
</table>';
$mail->send();
$success_msg = "Your Message Sent Successfully: ";
}catch(phpmailerException $e){
echo $e->errorMessage();
}catch(Exception $e){
echo $e->getMessage();
}
}
}
?>
<?php include 'header.php'; ?>
<div style="height:50vh;margin-top: 268px; background:#ddd;" class="d-flex justify-content-center align-items-center">
<?php
if(isset($success_msg)){
?>
<div class="alert alert-success" role="alert">
<?php
echo $success_msg . $enq_name;
?>
</div>
<?php
}else{
?>
<div class="alert alert-danger" role="alert">
<?php
echo "Something went wrong";
?>
</div>
<?php
}
?>
</div>
<?php include 'footer.php'; ?>
It's showing me that the email sent successfully, but I'm not getting any mail.
我联系了我的服务器求助热线,他们说某些 IP 被阻止了。但现在我已经允许来自 CPanel 的这些 IP。但是邮件还是发不出去
我真的需要帮助:)
感谢您抽出时间阅读。
PHPMailer 默认情况下不会抛出异常——您必须通过将 true
传递给构造函数来请求它们,如 $mail = new PHPMailer(true);
中那样。否则,您必须检查 send()
等方法的 return 值,以确定它们是否有效。
错误存储在 ErrorInfo
属性 – 请参阅 any of the code examples provided with PHPMailer 了解如何正确处理错误。
您还可以设置 $mail->SMTPDebug = 2;
以查看您的邮件服务器在说什么。除此之外,请阅读 the PHPMailer troubleshooting guide。
我的最终工作代码是:
function Redirect_to($New_Location){
header("Location:" . $New_Location);
exit;
}
if(isset($_POST['Submitenq'])){
require('phpmailer/PHPMailerAutoload.php');
define ('GUSER','courses@cadcentreju.org');
define ('GPWD','mailpass');
$recever1 = 'courses@cadcentreju.org';
$enq_name = $_POST["enq_name"];
$enq_email = $_POST["enq_email"];
$enq_phone = $_POST["enq_phone"];
$enq_message = $_POST["enq_message"];
date_default_timezone_set("Asia/Kolkata");
$CurrentTime = time();
$DateTime = strftime("%B-%d-%Y %H:%M:%S",$CurrentTime);
if(empty($enq_name) || empty($enq_email) || empty($enq_phone) || empty($enq_message)){
Redirect_to("index.php?error=1");
}else{
$mail = new PHPMailer(true);
try{
$mail->IsSMTP();
$mail->Mailer = "smtp";
// $mail->SMTPDebug = 2;
$mail->SMTPAuth = TRUE;
$mail->SMTPSecure = "none";
$mail->Port = 25;
$mail->Host = "mail.supremecluster.com";
// $mail->CharSet = "UTF-8";
$mail->Username = GUSER;
$mail->Password = GPWD;
$mail->isHTML(true);
$mail->setFrom($enq_email,$enq_name);
$mail->From = GUSER;
$mail->FromName = $enq_name;
$mail->addAddress($recever1);
$mail->Subject = 'Enquiry Mail from - '. $enq_name;
$mail->Body = '<table class="table" cellspacing="0">
<thead>
<tr>
<th colspan="2">Enquiry Mail from - '. $enq_name .'</th>
</tr>
</thead>
<tbody>
<tr>
<td colspan="2">'. '<p>Dear Sir / Madam, I have some enquiries. My Details are as follows :</p></br>' .'</td>
</tr>
<tr>
<td>Email:</td>
<td>'. $enq_email .'</td>
</tr>
<tr>
<td>Phone No:</td>
<td>'. $enq_phone .'</td>
</tr>
<tr>
<td>Message:</td>
<td>'. $enq_message .'</td>
</tr>
<tr>
<td>Date and TIME of Enquery:</td>
<td>'. $DateTime .'</td>
</tr>
</tbody>
</table>';
$mail->send();
$success_msg = "Your Message Sent Successfully: ";
}catch(phpmailerException $e){
echo $e->errorMessage();
}catch(Exception $e){
echo $e->getMessage();
}
我决定从我自己的服务器而不是 Gmail 服务器发送邮件:
所以我改变了:
$mail->SMTPSecure = "ssl";
至
$mail->SMTPSecure = "none";
最重要的是要记住:
$mail->Username = GUSER;
和
$mail->From = GUSER;
必须相同
和
此外, 我们必须将 true 传递给构造函数:
$mail = new PHPMailer(true)
// Argument true in constructor enables exceptions
转到您的 Gmail 帐户 -> 安全
找到“访问不太安全的应用程序”。打开它并再次 运行 您的 PHP 文件。
应该发送邮件了。