php email – как избежать почты, попавшей в спам-бокс

У меня есть контактная форма на моем веб-сайте, которая на самом деле работает: D Проблема в том, что электронная почта заканчивается в папке спама. Я попытался сделать материал в разделе заголовка, но ничего не работает.

Кто-нибудь может мне с этим помочь?

благодаря

<?php ini_set("display_errors", "0"); $post_data = filter_input_array( INPUT_POST, FILTER_SANITIZE_SPECIAL_CHARS ); $name = $post_data["name"]; $email = $post_data["email"]; $phone = $post_data["phone"]; $website = $post_data["website"]; $message = $post_data["message"]; # select data that needs validation $validate = array( 'required' => array($name,$email,$message), 'validEmail' => array($email), 'validNumber' => array($phone), 'validAlpha' => array($name) ); $formcontent = "Name: $name \nE-Mail: $email \nPhone: $phone \nWebsite: $website \nMessage: $message \n"; $formcontent = wordwrap($formcontent, 70, "\n", true); $recipient = "thomas.teilmann@gmail.com"; $subject = "Contact Messenbrink.eu"; /*$mailheader = "From: $email \r\n";**/ $mailheader .= "Reply-To: $name <$email>\r\n"; $mailheader .= "Return-Path: $name <$email>\r\n"; $mailheader .= "Content-Type: text/plain\r\n"; $mailheader .= "Organization: Sender Organization\r\n"; $mailheader .= "MIME-Version: 1.0\r\n"; $mailheader .= "Content-type: text/plain; charset=iso-8859-1\r\n"; $mailheader .= "X-Priority: 3\r\n"; $mailheader .= "X-Mailer: PHP". phpversion() ."\r\n"; $mailheader .= "From: $name <$email>\r\n"; function sendMail() { global $formcontent, $recipient, $subject, $mailheader; mail($recipient, $subject, $formcontent, $mailheader); } # error messages $errorsMsgs = array( 'required' => 'Please fill out all required fields.', 'validEmail' => 'is an invalid email address.', 'validNumber' => 'is an invalid number.', 'validAlpha' => 'contains invalid characters. This field only accepts letters and spaces.' ); $errorMarkup = "<h1>We found a few errors :-(</h1><h2>Please fix these errors and try again</h2><ol>"; $errorMarkupEnd = "</ol>"; $successMarkup = "<h1>Success!</h1><h2>Your form was sent successfully.</h2>"; $backMarkup = "<a href=\"" . $_SERVER['HTTP_REFERER'] . "\">Back to form</a>"; # begin state $valid = true; # loop through fields of error types foreach ($validate as $type => $fields) { # loop through values of fields to be tested foreach ($fields as $value) { # throw error if value is required and not entered if ($type === 'required' && strlen($value) === 0) { $errorMarkup .= "<li>$errorsMsgs[$type]</li>"; $valid = false; break; } else if ( $type === 'validEmail' && !filter_var($value, FILTER_VALIDATE_EMAIL) || $type === 'validNumber' && !preg_match('/^[0-9 ]+$/', $value) || $type === 'validAlpha' && !preg_match('/^[a-zA-Z ]+$/', $value) ) { if (strlen($value) === 0) {break;} # skip check if value is not entered $errorMarkup .= "<li>\"$value\" $errorsMsgs[$type]</li>"; $valid = false; continue; } } } if ($valid) { sendMail(); $body = $successMarkup . $backMarkup; $title = "Form sent"; } else { $body = $errorMarkup . $errorMarkupEnd . $backMarkup; $title = "Form errors"; } # write html ouput echo "<!DOCTYPE html><head><title>$title</title><style type=\"text/css\">body{margin:100px;font:16px/1.5 sans-serif;color:#111}h1{font-size:32px;margin:0;font-weight:bold}h2{font-size:18px;margin:0 0 20px 0}ol,li{list-style-position:inside;padding-left:0;margin-left:0}</style></head><body>$body</body></html>"; ?> 

Это не имеет никакого отношения к PHP-коду, но убедитесь, что письмо отправлено из домена, размещенного на сервере. Это означает, что было бы неплохо использовать ваш адрес gmail для отправки через PHP. Каждое письмо, покидающее сервер, должно быть подписано и должно иметь записи SPF

Обычно это происходит потому, что в DNS правильная запись SPF не была настроена. Это можно легко сделать в зависимости от используемого вами программного обеспечения. Если вы используете cPanel, это в значительной степени двухэтапный процесс.

Некоторые ссылки: http://www.emailquestions.com/help-desk/2418-why-do-my-own-emails-go-into-spam.html http://www.google.co.uk/search? sourceid = chrome & ie = UTF-8 & q = spf + records http://www.techtalkpoint.com/articles/setting-up-spf-records-in-cpanel-whm-and-namecheap/

Убедитесь, что источник сообщения действителен. Кроме этого, вы не можете многое сделать в PHP. Остальное – содержимое вашего сообщения, ваш почтовый сервер и фильтр спама сервера получателя.

Попытайтесь убедиться, что данные в ваших заголовках соответствуют тем, что обычно отображается в обычном сообщении. Например, лучше, чтобы ваше имя домена From и Return-Path соответствовало серверу, с которого вы отправляете.

Я заметил, что вы просто используете \n в качестве разделителя строк в теле. Это должно быть \r\n независимо от используемой ОС.

В идеале, изучите RFC 2822 . Если у вас нет времени для этого, по крайней мере, сравните свои заголовки с другими электронными письмами, которые, по вашему мнению, являются действительными. Там, где это возможно, соответствуют порядку заголовков, включая размещение одинакового количества пустых строк в соответствующих местах.

Спам не фильтруется какой-либо настройкой, он фильтруется по вашему выбору слова и тому, как выглядит сообщение, а также насколько хорошо известен адрес электронной почты отправителя. Если вы хотите избежать списка спама, вы должны произнести это так, чтобы не было спама.

Мое одно предложение заключалось бы в том, чтобы адрес электронной почты От адреса был адресом электронной почты фактической учетной записи электронной почты, которую вы используете, чтобы отправить их, а не учетной записи электронной почты клиента. Ваш провайдер электронной почты может подумать, что они подделывают, если письмо отправляется с адреса электронной почты, но не с сервера в этом домене.

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

Вероятно, используется smtp, что недействительно.

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

У меня была аналогичная проблема с Gmail, я просто выбрал письмо и установил «Не спам» теперь все электронные письма, отправленные моим сервером, когда кто-то использует форму контакта на моем сайте в папке «Входящие». Надеюсь это поможет.