PHP Mailer仅通过Outlook进入垃圾邮件箱(hotmail)

时间:2019-06-12 10:53:10

标签: php phpmailer

我正在网上搜索如何用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>';
        }
    }

我希望有人能给我一个很好的解释,说明如何确切地解决此问题。因为在线上有很多答案,但它们不准确。

1 个答案:

答案 0 :(得分:1)

首先,我看到您使用的是非常旧的PHPMailer版本,其中包含许多错误和一些已知漏洞,因此upgrade now

要回答您的问题,请不要这样做:

$mail->Sender = $_POST['user_email'];

这是伪造的,将导致您的邮件被完全拒绝或被垃圾邮件过滤。改用您的常规发件人地址,即,根本不用设置Sender属性。

即使已修复此问题,也无法保证您的邮件不会被标记为垃圾邮件;这不是您可以直接控制的 ,并且每个ISP都会有所不同。还有许多其他因素可能会影响此效果,例如SPF,DKIM,DMARC,TLS,DNS设置,您的内容和发送历史记录以及许多其他因素。

虽然我在这里,当您说Your password is ".$user_password时,这表明您可能以纯文本形式存储密码。不要这样做,这是非常不安全的,PHP具有内置函数可以帮助您正确地进行操作,在此以及其他地方有很多答案可以帮助您。