2015-03-01 6 views
1

Я знаю, что на этом сайте много подобных вопросов, но никто из них не помог мне.PHP Mail отправляется на спам

У меня есть следующий PHP код:

<?php 
$to = "[email protected]"; 
$from = "[email protected]"; 
$subject = "Confirm your registration!"; 
$message = "Please follow this link to confirm your registration: www.bit.ly/32106"; 

$headers = "MIME-Version: 1.0" . "\r\n"; 
$headers .= "Content-type: text/html; charset=iso-8859-1" . "\r\n"; 
$headers .= "From: HeyGee! <[email protected]>" . "\r\n" . 
"Reply-To: [email protected]" . "\r\n" . 
"X-Mailer: PHP/" . phpversion(); 

$ok = @mail($to, $subject, $message, $headers, "-f " . $from); 
?> 

Скажем [email protected] мой тест по электронной почте. Всякий раз, когда я отправляю почту на свой адрес, я всегда получаю почту в папке «Спам». Почему это? Есть ли какие-либо исправления или уловки, чтобы предотвратить попадание почты в спам?

Спасибо.

ответ

3

Причина, по которой ваша почта отправляется в папку «Спам», либо из-за содержания вашей электронной почты, либо из-за того, что принимающая сторона не может проверить, действительно ли письмо было отправлено из указанного домена по адресу from, если отправитель (вы) имеет право отправлять электронную почту от имени heygee.com.

Часть контента легко исправить. Вам нужно избегать плохой грамматики, неоднозначных ссылок (например, ссылок, которые говорят google.com, но указывают на example.com) и т. Д. Ваше сообщение должно быть хорошо сформулировано (исключая те слова, которые часто встречаются в спам-письмах), и предпочтительно также включают unsubscribe link (если отправлено в список рассылки).

Теперь идет вторая и сложная часть. Домен, который вы пишете на своем адресе from, должен быть тем же самым доменом, из которого вы выполняете этот почтовый скрипт, или должен быть авторизован данными TXT этого домена для отправки почты от его имени. Простейший способ сделать это будет (при условии, что у вас есть доступ к отправляющему доменному имени), чтобы добавить запись TXT SPF, разрешающую IP-адрес сервера, на котором работает ваш скрипт, для отправки почты от его имени. Пример SPF запись:

"v=spf1 ip6:1080::8:800:200C:417A/96 -all" 

выше запись означает Allow any IPv6 address between 1080::8:800:0000:0000 and 1080::8:800:FFFF:FFFF.

заказ: SPF (Wikipedia)

Кроме того, вы можете посмотреть здесь http://www.openspf.org/

Теперь, если у вас нет DNS доступа, а затем просто измените доменное имя адреса from на доменное имя сервера, и оно должно исправить его.

Надеюсь, это поможет.

0

Это не связано с вашим программированием. Фильтрация электронной почты как спама выполняется на стороне клиента, и вы ничего не можете изменить по этому поводу (если бы это было так, миллионы спамеров делали бы это)

Проблема в том, что ваша электронная почта выглядит так: спам. Попытайтесь написать лучшее электронное письмо с телом длиной более 1 строки. Я также удалю восклицательный знак из темы; это тоже то, что делает его похожим на спам.

Если ваша система обнаружения спама дает вам подробную информацию о том, почему она была помечена как спам (SpamAssassin может это сделать в зависимости от того, как она настроена), используйте эту информацию, чтобы исправить отправляемое электронное письмо.

+1

Другой проблема может быть отправкой почтового сервера. Отправляющий почтовый сервер должен быть настоящим почтовым сервером, который настроен для домена отправителей. Nslookup домена отправителей должен вернуть ipservers ip.И обратный поиск отправителей ip должен вернуть домен отправителей. – steven

+0

OP, возможно, потребуется заглянуть в записи SPF/DKIM в DNS, что не связано с программированием, этот вопрос может быть лучше переформулирован и задан на сервере-ошибке или суперпользователе – Jonathan

+0

@steven только если у вас есть записи SPF; не проблема, если вы этого не сделаете. –