邮件进入垃圾邮件文件夹(php邮件功能)[重复]

Posted

技术标签:

【中文标题】邮件进入垃圾邮件文件夹(php邮件功能)[重复]【英文标题】:Mail goes to spam folder ( php mail function ) [duplicate] 【发布时间】:2014-12-21 00:58:24 【问题描述】:

我用来发送邮件的这段代码,但不幸的是邮件进入了垃圾邮件文件夹。我尝试了 gmail 和 hotmail,但情况相同。 php代码是:

<?php
if($_POST)

//check if its an ajax request, exit if not
if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') 
    die();
 

$to_Email       = "zinan09@gmail.com"; //Replace with recipient email address
$subject        = 'My email from Somebody out there...'; //Subject line for emails

//check $_POST vars are set, exit if any missing
if(!isset($_POST["userName"]) || !isset($_POST["userEmail"]) || !isset($_POST["userMessage"]))

    die();


//Sanitize input data using PHP filter_var().
$user_Name        = filter_var($_POST["userName"], FILTER_SANITIZE_STRING);
$user_Email       = filter_var($_POST["userEmail"], FILTER_SANITIZE_EMAIL);
$user_Message     = filter_var($_POST["userMessage"], FILTER_SANITIZE_STRING);

//additional php validation
if(strlen($user_Name)<4) // If length is less than 4 it will throw an HTTP error.

    header('HTTP/1.1 500 Name is too short or empty!');
    exit();

if(!filter_var($user_Email, FILTER_VALIDATE_EMAIL)) //email validation

    header('HTTP/1.1 500 Please enter a valid email!');
    exit();

if(strlen($user_Message)<5) //check emtpy message

    header('HTTP/1.1 500 Too short message! Please enter something.');
    exit();


//proceed with PHP email.
$headers = 'From: '.$user_Email.'';

@$sentMail = mail($to_Email, $subject, $user_Message .'  -'.$user_Name, $headers);

if(!$sentMail)

    header('HTTP/1.1 500 Could not send mail! Sorry..');
    exit();
else
    echo 'Hi '.$user_Name .', Thank you for your email! ';
    echo 'Your email has already arrived in my Inbox, all I need to do is Check it.';


?>

是否有任何缺失的功能需要我添加或修改来解决这个问题

【问题讨论】:

好吧,绝对不可能来自用户自己的电子邮件。这可能会触发垃圾邮件检测器。 邮件客户端中的垃圾邮件功能会在邮件中查找特定关键字,如果这些关键字匹配,则会将其移至垃圾邮件文件夹。您可能想要修改您通过电子邮件发送的内容。发件人也很重要。我会使用类似 info@ 【参考方案1】:

尝试将From标头设置为实际的服务器域地址(即no-reply@mysite.com),并将用户电子邮件移动到Reply-To标头。这将使反垃圾邮件过滤器平静下来。

$headers = 'From: no-reply@mysite.com' . "\r\n";
$headers .= 'Reply-To: '.$user_Email.'';

【讨论】:

【参考方案2】:

正如我在 cmets 中所说,您可能想查看您的内容。

此外,您的电子邮件发件人与电子邮件收件人相同。我会修改它,使其成为您无法回复的静态电子邮件。

你的邮件还有 5 个变量,不知道为什么,但如果你使用标题,你可以把它们塞进去。

例子。

    $message = wordwrap($message, 70);  
    $to = "info@somewebsite.com";  // change this propperty for your own email
    $subject = "Een gebruiker heeft een vraag of opmerking";

    $body = 'yadidyadi'. $message ;
    $headers = "MIME-Version: 1.0" . "\r\n";
    $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
    $headers .= "From: noreply@jellyfishwebdesign.nl"; // make this one static.. i made mine noreply

    if (mail ($to, $subject, $body, $headers)) 
       echo 'yay, mail send';
    

编辑

只是指出,这与您的问题无关,您的第一次检查,if($_POST) 有点不相关,因为您想检查是否按下了某个按钮。如果你在这个文件中为不同的进程添加不同的代码,整个邮件都会被触发,尽管你正在编辑一个帖子,在数据库中输入一些东西......这个文件将被调用。

【讨论】:

以上是关于邮件进入垃圾邮件文件夹(php邮件功能)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Codeigniter邮件功能将邮件发送到垃圾邮件文件夹[重复]

电子邮件总是进入垃圾邮件文件夹[重复]

PHP mail()表单发送到GMAIL垃圾邮件[重复]

用 PHP 生成的邮件会变成垃圾邮件 [重复]

如何避免电子邮件标题收到:来自未知和电子邮件进入垃圾邮件

在标签中使用域名时,电子邮件进入垃圾邮件[重复]