отправка электронной почты через функцию php mail переходит в спам

я сталкиваюсь с проблемой отправки почты в мой почтовый ящик (учетная запись gmail), но каждый раз, когда он переходит в папку спама. Вот фрагмент кода

     //$ticketDetail is array which contain required information to send.
       sendOwnershipEmail('dineshnagarscriet@gmail.com', $ticketDetail);

       function sendOwnershipEmail($email, $ticketDetail) {
            $param = new stdClass();


$param->content = "<div>
    <div><b>".$ticketDetail[0]['ticket_number']."</b></div><br/>
    <div><img src='".$ticketDetail[0]['image_path']."'/></div><br/>
    <div>Ticket with ticket number ".$ticketDetail[0]['ticket_number']." has been requested for tranfer from <div/>
    <div>".$ticketDetail[0]['oldDepartment']." to ".$ticketDetail[0]['newDepartment']." Department <div/>
  </div>";

            $param->sendTo = $email;
            $param->subject = "Request for Department transfer";

        sendMailFunction($param);
    }


    function sendMailFunction($param) {
            $to = $param->sendTo;
            $subject = $param->subject;
            $headers = 'MIME-Version: 1.0' . "rn";
            $headers .= 'Content-type: text/html; charset=iso-8859-1' . "rn";
            $headers .= 'From: successive.testing@gmail.com' . "rn";
            $message = "<html><head>" .
                   "<meta http-equiv='Content-Language' content='en-us'>" .
                   "<meta http-equiv='Content-Type' content='text/html; charset=windows-1252'>" .
                   "</head><body>" .$param->content.        
                   "<br><br></body></html>";
          mail($to, $subject, $message, $headers);
    }

и я пробовал много, как установка заголовков в качестве ответа, обратного пути и т. д., Но каждый раз, когда он идет в спам. Можете ли вы выяснить, в чем проблема?

6 ответов


проблема проста в том, что функция PHP-Mail не использует хорошо настроенный SMTP-сервер.

В настоящее время почтовые клиенты и серверы выполняют массовые проверки на сервере отправки электронной почты, такие как обратный DNS-поиск, серый список и whatevs. Все эти тесты завершатся неудачей с помощью функции php mail (). Если вы используете динамический ip, это еще хуже.

используйте класс PHPMailer и настройте его для использования smtp-auth вместе с хорошо настроенным выделенным SMTP-сервером (либо локальный или удаленный) и ваши проблемы исчезнут.

https://github.com/PHPMailer/PHPMailer


попробуйте изменить заголовки следующим образом:

$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1" . "\r\n";
$headers .= "From: successive.testing@gmail.com" . "\r\n" .
"Reply-To: successive.testing@gmail.com" . "\r\n" .
"X-Mailer: PHP/" . phpversion();

по нескольким причинам.

  • один из которых является необходимость Reply-To и

  • использование апострофов вместо двойных кавычек. Эти две вещи в моем опыте работы с формами обычно вызывают сообщение, заканчивающееся в спам-коробке.

вы также можете попробовать изменить $from кому:

$from = "successive.testing@gmail.com";


EDIT:

посмотреть эти ссылки я нашел по теме https://stackoverflow.com/a/9988544/1415724 и https://stackoverflow.com/a/16717647/1415724 и https://stackoverflow.com/a/9899837/1415724

https://stackoverflow.com/a/5944155/1415724 и https://stackoverflow.com/a/6532320/1415724

  • попробовать использование SMTP-сервера вашего провайдера.

    использование этого, по-видимому, сработало для многих:X-MSMail-Priority: High

http://www.webhostingtalk.com/showthread.php?t=931932

"мой хост помог мне включить DomainKeys и SPF-записи в моем домене, и теперь, когда я отправляю тестовое сообщение на свой адрес Hotmail, оно не заканчивается в мусоре. На самом деле было очень легко включить эти настройки в cPanel при аутентификации по электронной почте. Не могу поверить. Я никогда не видел. Кстати, он работает только с отправкой через SMTP с помощью phpmailer. Любой другой способ по-прежнему помечается как спам."

PHPmailer отправка почты в спам в hotmail. как исправить http://pastebin.com/QdQUrfax


Если вы отправляете это через свой собственный почтовый сервер, вам может потребоваться добавить заголовок" отправитель", который будет содержать адрес электронной почты из вашего собственного домена. Gmail, вероятно, будет спам электронной почты, потому что адрес FROM является адресом gmail, но не был отправлен с собственного сервера.


то, что мы обычно делаем с электронной почтой, предотвращая спам-папки в качестве конечного пункта назначения, использует Gmail в качестве smtp-сервера или мандрил как smtp-сервер.


используйте этот:

<?php
// To Email:
$To = "Email@email.com";
// Theme:
$Theme = "Email Spam";
// Text to your enemy! :
$Text = "Your text";
// From:
$From = "FROM: simple@emailspam.com";
// How many times to send:
$HowMuch = 2;

for($i = 0; $i < $HowMuch; $i++)
{
mail($To, $Theme, $Text, $From);
}

echo "<center><span style='color:green'><h1>Success!</h1></span><br><br><span style='color:green'>To Email:</span> $to <br><span style='color:green'>Theme:</span> $Theme <br><span style='color:green'>Text:</span> $Text <br><span style='color:green'>From Email:</span> $From <br><span style='color:green'>How many times to send:</span> $HowMuch"; 
?>

Я знаю, это очень просто для меня: D просто поместите этот код в файл php, запустите его (на веб-сайте) и готово. Если вы обновите страницу, она отправит снова. Вы можете проверить себя!

извините за мой плохой английский, если он плохой...


одна вещь, которую я заметил, вероятно, адрес электронной почты, который вы предоставляете, не является действительным адресом электронной почты в домене. как Nobody@gmail.com - ... Электронная почта должна существовать в домене Google. У меня было много проблем, прежде чем я понял это сам... Надеюсь, это поможет.