我正在网上搜索如何用phpmailer修复Outlook(Hotmail)内部的垃圾邮件箱中的问题。
我尝试了很多事情,但是没有一个起作用。
$result = $statement->fetchAll();
if(isset($result))
{
$base_url = "http://www.gester.nl/loginsystem2/"; //change this baseurl value as per your file path
$mail_body = "
<p>Hi ".$_POST['user_name'].",</p>
<p>Thanks for Registration. Your password is ".$user_password.", This password will work only after your email verification.</p>
<p>Please Open this link to verified your email address - <a href='".$base_url."email_verification.php?activation_code=".$user_activation_code."'>".$base_url."email_verification.php?activation_code=".$user_activation_code."</a>
<p>Best Regards,<br />Gester</p>
";
require 'class/class.phpmailer.php';
$mail = new PHPMailer;
$mail->IsSMTP(); //Sets Mailer to send message using SMTP
$mail->Host = 'xxxx'; //Sets the SMTP hosts of your Email hosting, this for Godaddy
$mail->Port = '587'; //Sets the default SMTP server port
$mail->SMTPAuth = true; //Sets SMTP authentication. Utilizes the Username and Password variables
$mail->Username = 'xxxx'; //Sets SMTP username
$mail->Password = 'xxxx'; //Sets SMTP password
$mail->SMTPSecure = 'tls'; //Sets connection prefix. Options are "", "ssl" or "tls"
$mail->From = 'xxxx@mail.com'; //Sets the From email address for the message
$mail->FromName = 'Gester'; //Sets the From name of the message
$mail->Sender = $_POST['user_email'];
$mail->AddAddress($_POST['user_email'], $_POST['user_name']); //Adds a "To" address
$mail->WordWrap = 50; //Sets word wrapping on the body of the message to a given number of characters
$mail->IsHTML(true); //Sets message type to HTML
$mail->Subject = 'Email Verification'; //Sets the Subject of the message
$mail->Body = $mail_body; //An HTML or plain text message body
if($mail->Send()) //Send an Email. Return true on success or false on error
{
$message = '<label class="text-success">Register Done, Please check your mail.</label>';
}
else {
$message = '<label class="text-danger">Mail could not be send.</label>';
}
}
我希望有人能给我一个很好的解释,说明如何确切地解决此问题。因为在线上有很多答案,但它们不准确。
答案 0 :(得分:1)
首先,我看到您使用的是非常旧的PHPMailer版本,其中包含许多错误和一些已知漏洞,因此upgrade now。
要回答您的问题,请不要这样做:
$mail->Sender = $_POST['user_email'];
这是伪造的,将导致您的邮件被完全拒绝或被垃圾邮件过滤。改用您的常规发件人地址,即,根本不用设置Sender
属性。
即使已修复此问题,也无法保证您的邮件不会被标记为垃圾邮件;这不是您可以直接控制的 ,并且每个ISP都会有所不同。还有许多其他因素可能会影响此效果,例如SPF,DKIM,DMARC,TLS,DNS设置,您的内容和发送历史记录以及许多其他因素。
虽然我在这里,当您说Your password is ".$user_password
时,这表明您可能以纯文本形式存储密码。不要这样做,这是非常不安全的,PHP具有内置函数可以帮助您正确地进行操作,在此以及其他地方有很多答案可以帮助您。