【问题标题】:Using PHPmailer all mail landed in spam folder使用 PHPmailer 将所有邮件都放在垃圾邮件文件夹中
【发布时间】:2019-04-17 00:49:26
【问题描述】:

我正在使用 smtp 身份验证,然后邮件也进入垃圾邮件文件夹。 如果邮件正文包含外部文件 (file_get_containts),则邮件将进入垃圾邮件文件夹。

但是,如果邮件正文仅包含字符串,则邮件将进入收件箱文件夹。

有人可以帮我解决这个问题吗?

这是我的代码:-

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

//Load Composer's autoloader
require 'vendor/autoload.php';

if( isset($_POST['name']) && isset($_POST['email']) && isset($_POST['phone']) && isset($_POST['message']) ){

$name = $_POST['name'];

$email = $_POST['email'];

$phone = $_POST['phone'];
$m = nl2br($_POST['message']);

$mail   = new PHPMailer();
$mail->isSMTP();
$mail->Host = 'mail.example.in';  
$mail->SMTPAuth = true;
$mail->Username = 'info@example.in';
$mail->Password = 'nsdfdk^^dsfx7wffdsry8e^';                           
$mail->SMTPSecure = 'ssl';
$mail->Port = 465;
$mail->From = 'info@example.in';
$mail->FromName = 'John Smith';
$mail->addCustomHeader('MIME-Version: 1.0');
$mail->addCustomHeader('Content-Type: text/html; charset=ISO-8859-1');
$mail->addAddress('example@gmail.com', 'Jay Senghani');

$mail->WordWrap = 50;                       

$mail->isHTML(true);     

$mail->Subject = "New Enquiry from  website";


$message = file_get_contents('emails/admin.html');
    $patterns = array();
    $patterns[0] = '/{name}/';
    $patterns[1] = '/{email}/';
    $patterns[2] = '/{number}/';
    $patterns[3] = '/{message}/';
    $replacements = array();
    $replacements[0] = $name;
    $replacements[1] = $email;
    $replacements[2] = $phone;
    $replacements[3] = $m;
$message = preg_replace($patterns, $replacements, $message);

$mail->Body = $message;


if(!$mail->send()) {
        echo 'Message could not be sent.';
        echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
        echo 'Message has been sent /n';
}

}

// For User Automated Email

if( isset($_POST['name']) && isset($_POST['email']) && isset($_POST['phone'])){
$name = $_POST['name'];
$email = $_POST['email'];
$phone = $_POST['phone'];

$mail = new PHPMailer();
$mail->isSMTP();
$mail->Host = 'mail.example.in'; 
$mail->SMTPAuth = true;                              
$mail->Username = 'info@example.in';
$mail->Password = 'ndfgk^dfgg^gfdggfdgdfgdfx7wfy8e^';                          
$mail->SMTPSecure = 'ssl';                     
$mail->Port = 465;
$mail->From = 'info@example.in';
$mail->FromName = 'John Smith';
$mail->addAddress($email, $name);    
$mail->addCustomHeader('MIME-Version: 1.0');
$mail->addCustomHeader('Content-Type: text/html; charset=ISO-8859-1');
$mail->isHTML(true);                                  

$mail->Subject = "Thank you for your interest Website ";
// $mail->addAttachment('Attachment Path', 'pdf'); 

$message = file_get_contents('emails/user.html');
$message = preg_replace('/{name}/', $name, $message);

$mail->Body = $message;

if(!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error: ' . $mail->ErrorInfo;
    } else {
        echo 'Message has been sent /n';
}

}


?>

这是我的管理模板:-

    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title></title>
      <link rel="stylesheet" href="css/style.css">
    </head>
    <body>
      <div id="emailWrapper">
        <div id="emailHeader">
          <div class="topBar"></div>
          <a class="branding" href="http://example.com/" target="_blank" >
            <img src="https://i.imgur.com/JME5efdRs.png">
          </a>  
        </div> 
        <div id="emailContent">
          <h2 class="greetings">
            Dear Admin,
          </h2>
          <div class="content">
            <p class="intro">
              New enquiry from XYZ Website
            </p>
            <p>
              <strong>Name&nbsp;:</strong>&nbsp;{name}
            </p>
            <p>
              <strong>Number&nbsp;:</strong>&nbsp;{number}
            </p>
            <a class="email">
              <strong>Email&nbsp;:</strong>&nbsp;{email}
            </a>
            <p>
              <strong>Message&nbsp;:</strong>&nbsp;{message}
            </p>
          </div>
          <div class="regards">
            <h5><strong>Thanks &amp; Regards,</strong></h5>
            <h6>XyZ</h6>
          </div>
        </div>  <!-- END #emailContent  -->
        <div id="emailFooter">
          <div class="bottomBar">
            <p>
              &copy; 2018 Xyz. All rights reserved
            </p>
          </div>

        </div>  

      </div>  

    </body>
    </html>

【问题讨论】:

  • 您不需要添加那些自定义标题 - 它会破坏您的消息。 PHPMailer 为您完成。接收者通常会添加标题,告诉您为什么邮件被归类为垃圾邮件,因此请阅读它们。
  • 不管接收电子邮件服务(Gmail、Msn 等)是否都是相同的行为?您是从自己的域还是共享域发送?
  • @Henkealg 是的,它在 Gmail、Yahoo 和 MSN 中也是如此。是的,我是从我自己的域发送的
  • @Synchro,所以基本上我不想在 PHPMailer 中添加自定义标头,对吧?
  • 添加 custom 标头很好,但是您要添加 PHPMailer 已经提供的标头的副本。

标签: email phpmailer email-spam


【解决方案1】:

由于缺乏主要电子邮件服务提供商(Gmail、Msn、mail.com、Yahoo 等)的反垃圾邮件功能的内部工作原理,对电子邮件送达率进行故障排除非常棘手。良好的电子邮件送达率的主要方面通常是您的域声誉。如果您刚开始使用新的电子邮件域,大多数接收服务往往对您的前 xx 封电子邮件持怀疑态度。 如果您的电子邮件包含无效或糟糕的 html,则会提高垃圾邮件分数。如果你添加附件,它肯定会提高分数。

我认为您的不带附件的电子邮件刚好低于进入垃圾邮件文件夹的阈值。添加附件时,它会略高于相同的阈值。 大多数服务还应用每个用户的规则,因此在同一服务中的接收者之间可以对您的电子邮件的处理进行不同的处理。

如果 PHPmailer 对交付不佳负责,作为故障排除的一个步骤,我建议设置一个电子邮件客户端,如 Mozilla Thunderbird 并从那里发送一些电子邮件。 这将帮助您找出电子邮件可传递性的来源。

如果您不想考虑可交付性,您可以使用 Mailgun 等 SMTP 服务创建一个帐户。

【讨论】:

    猜你喜欢
    • 2014-07-23
    • 2012-12-03
    • 2013-05-29
    • 1970-01-01
    • 1970-01-01
    • 2014-08-07
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多