提问者:小点点

防止发送到垃圾邮件gmail的php邮件[重复]


这是我的完整代码,我用来从一个网站上的联系表单发送电子邮件。 尽管使用了所有最佳实践(Header等),结果是:

1)每次发送给用户的确认邮件都是gmail垃圾邮件,并被称为网络钓鱼

2)管理电子邮件被标记为网络钓鱼

有人能帮我吗? 谢谢!

<?
// -----------------------------------------------------------------------------
// Website info

    $SiteName = "www.example.com";
    $SiteWork = "Enterprise Name";
    $SiteMin = "Ent. name";
    $SiteEmail = "info@example.com";
    $SecondaryEmail = "admin@example.com";
    $ThankYouMessage = "$SiteMin - Message sent!";
    $SiteTel = "Tel (+39) 0XX.XXXXXXX";
    $SiteFax = "Fax (+39) 0XX.XXXXXXX";
    $SiteSocial = "#...";
    $SiteAddress = "...";

// -----------------------------------------------------------------------------
// Retrieve contents

    $UserSubject = $_POST['UserSubject'];
    $UserName = $_POST['UserName'];
    $UserCity = $_POST['UserCity'];
    $UserEmail = $_POST['UserEmail'];
    $UserComments = $_POST['UserComments'];
    $UserAuth = $_POST['UserAuth'];

// -----------------------------------------------------------------------------
// Set up user message

    $UserMessage = "<html><head></head><body>";
    $UserMessage .= "<font size='6px'>";
    $UserMessage .= "Ciao $UserName,";
    $UserMessage .= "</font><br><br>";
    $UserMessage .= "<font size='4px'>";
    $UserMessage .= "abbiamo ricevuto il tuo messaggio.<br>";
    $UserMessage .= "Grazie per averci scritto, ti risponderemo al più presto.<br><br>";
    $UserMessage .= "</font><br>";
    $UserMessage .= "<img src='http://www.piazzaimpianti.it/img/logo.svg' width='60px'><br><br>";
    $UserMessage .= "$SiteWork $SiteAddress<br>";
    $UserMessage .= "$SiteTel - $SiteName - $SiteSocial<br>";
    $UserMessage .= "$SiteName<br>";
    $UserMessage .= "</body></html>";

    $UserHeaders = "From: $SiteEmail\r\n";
    $UserHeaders .= "Reply-To: $SiteEmail\r\n";
    $UserHeaders .= "Return-Path: $SiteEmail\r\n";
    $UserHeaders .= "CC:\r\n";
    $UserHeaders .= "BCC:\r\n";
    $UserHeaders .= "MIME-Version: 1.0\r\n";
    $UserHeaders .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
    $UserHeaders .= "X-Priority: 3\r\n";
    $UserHeaders .= "X-Mailer: PHP". phpversion() ."\r\n";

// -----------------------------------------------------------------------------
// Set up admin message

    $AdminMessage = "Messaggio:\n";
    $AdminMessage .= "\n";
    $AdminMessage .= "$UserComments\n";
    $AdminMessage .= "\n\n";
    $AdminMessage .= "-------------------------------------------------\n";
    $AdminMessage .= "Dati utente:\n";
    $AdminMessage .= "-------------------------------------------------\n";
    $AdminMessage .= "$UserName \n";
    $AdminMessage .= "$UserEmail \n";
    $AdminMessage .= "$UserCity \n";
    $AdminMessage .= "-------------------------------------------------\n";
    $AdminMessage .= "Autorizzi il trattamento dei dati ai sensi del D.lgs.196/03 (*)? $UserAuth \n";
    $AdminMessage .= "-------------------------------------------------\n";
    $AdminMessage .= "Puoi rispondere al messaggio di $UserName\n";
    $AdminMessage .= "scrivendo all'indirizzo: $UserEmail\n\n";

// -----------------------------------------------------------------------------
// Send confirmation to contact page

    $array['Sent'] = array('payload' => 'sent');
    echo json_encode($array);

// -----------------------------------------------------------------------------
// Send the emails

// confirmation email to user
    mail($UserEmail, $ThankYouMessage, $UserMessage, $UserHeaders); 

// email to admin
    mail("$SiteEmail", "$UserSubject", $AdminMessage, "From: $UserEmail"); 

?>

共2个答案

匿名用户

你需要使用标题。 这对我很有效:

$to = "mail@example.com";
$subject = "your subject";
$body = "<p>Your Body</p>";
$headers  = "From: Sender Name <mail2@example.com>" . "\r\n";
$headers .= 'MIME-Version: 1.0' . "\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
mail($to, $subject, $body, $headers);

此外,您还可以在您获得域名的注册机构中为SPF添加TXT记录。 转到DNS设置并添加以下TXT记录:

类型:txt
主机:example.com
值:v=spf1 ip4:your.server.ip.here~all
ttl:automatic

这是用来验证邮件没有被欺骗的。

匿名用户

你不能明确地控制你的电子邮件是否被标记为垃圾邮件,但是你可以做一些事情来帮助你。

  • 确保反向DNS正确。
  • 实施SPF.
  • 实现DKIM.
  • 在本地安装SpamAssassin,并在打开详细模式的情况下运行邮件示例,以了解邮件被标记的原因。
  • 使用MailChimp或MailGun等服务,而不是本地投递器。