почта, отправленная как спам-phpmailer, как избежать

Я знаю, что в первом взгляде многие пользователи отмечают этот вопрос как дубликат, но после прочтения более 10 вопросов я не получил удовлетворительного ответа, почти у всех вопросов есть ответы с такими словами, как «Не так много вы можете с этим поделать». Я не уверен »,« Нет уверенного трюка »и т. Д., Поэтому я пишу этот вопрос, и я думаю, что это очень обобщенные вопросы, и каждый разработчик php сталкивается с ним хотя бы один раз, достаточно речи :), теперь мой вопрос есть ..

Я работаю над приложением для управления проектами и использую phpmailer для отправки почты при создании какой-либо задачи, или любые комментарии к сообщениям об ошибках отправляются связанным пользователям, фактически вместо отправки писем, как только действие произойдет, я создал таблицу «уведомлений» где я фактически сохраняю все почтовые данные и скрипт cron, а затем отправляю все письма, вот часть моего скрипта cron.

$query = "select * from notifications where 1 "; $projects = $obj_basic->get_query_data($query); if(!empty($projects)) { foreach($projects as $data) { $message = html_entity_decode($data['content'], ENT_QUOTES); list($ton, $email) = get_name_email($data['to']); if(!empty($email)) { $query = "select send_notification from users where email='$email' AND send_notification !='1' "; $users = $obj_basic->get_query_data($query); if(!empty($users)) { $deleteQuery = "delete from notifications where id ='".$data['id']."'"; $obj_basic->run_query($deleteQuery, 'DELETE'); continue; } $comment_id = $data['reference_id']; $attribute = $data['attribute']; $mail = new PHPMailer(); list($fromName, $fromEmail) = get_name_email($data['from']); if(!empty($comment_id) && $attribute == 'comment') { $fromEmail = 'comment@changewebaddress.com'; } $mail->SetFrom($fromEmail, $fromName); $mail->AddReplyTo($fromEmail, $fromName); $mail->AddAddress($email, $ton); $mail->BouncedTo = $fromEmail; $mail->IsHTML(true); $mail->Subject = $data['subject']; $mail->Body = $message; $MessageID = "<".md5($comment_id.'_'.$email).'@changewebaddress.com>'; $mail->MessageID= $MessageID; if($mail->Send()) { if(!empty($comment_id) && $attribute == 'comment') { $query = "SELECT message_id FROM `project_comments` WHERE `id`='$comment_id'; "; $project_comments = $obj_basic->get_query_data($query, 'SELECT'); if(!empty($project_comments)) { $project_comments[0]['message_id'] = html_entity_decode(trim($project_comments[0]['message_id'], ",")); $query = "UPDATE `project_comments` SET `message_id`=CONCAT_WS(',', '".mysql_escape_string($project_comments[0]['message_id'])."', '".mysql_escape_string(html_entity_decode($MessageID))."') WHERE `id`='$comment_id'; "; $obj_basic->run_query($query, 'UPDATE'); } } $deleteQuery = "delete from notifications where id ='".$data['id']."'"; $obj_basic->run_query($deleteQuery, 'DELETE'); } } } } 

в соответствии с тем, что я тестировал, все выглядит хорошо, так как я использую phpmailer, он устанавливает требуемый заголовок, он также устанавливает «Return-Path:» и «Reply-To:» в заголовке.

Есть ли точное решение по этому вопросу?

  1. Убедитесь, что все необходимые заголовки установлены.
  2. Проверьте, есть ли дополнительные дополнительные заголовки, которые вы должны установить.
  3. Отправка HTML / многостраничного сообщения с несогласованными текстами / разделами HTML недовольна некоторыми фильтрами.
  4. Абсолютно любая почта, которую вы отправляете программно, должна иметь либо ссылку, либо инструкции о том, как отказаться. Как правило, это соблюдается только с соблюдением прав человека черными списками и отделом злоупотребления в вашем интернет-провайдере.
  5. Убедитесь, что ваш SMTP-сервер не включен в черный список или имеет слабую репутацию.
  6. Убедитесь, что ваш веб-сервер не имеет плохой репутации. Некоторые сканеры включают репутацию каждого MTA в цепочке.
  7. Прежде чем отправлять их, просмотрите содержимое своих сообщений. Если что-нибудь в этом можно даже грубо толковать как попытку продать что-то кому-то, измените его.
  8. Пожертвуйте маленькое животное темным богам электронной почты и надейтесь на надежду.
  9. Проверьте заголовки сообщений, помеченных как спам, чтобы узнать, оставила ли система фильтрации спама полезную информацию о том, почему она была заблокирована.
  10. Спросите администраторов принимающего сервера, почему сообщение было заблокировано.
  11. Примите, что нет, и никогда не будет «точного решения по этой проблеме». Когда-либо.

Есть ли точное решение по этому вопросу?

К сожалению нет. Это нетривиальная проблема с большой сложностью, которая предотвращает точные решения.

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

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

В принятом ответе есть много хороших советов. Кроме того, добавление записи SPF в мой DNS помогло избежать спам-фильтров. Подробнее о записях SPF …

http://en.wikipedia.org/wiki/Sender_Policy_Framework

У Microsoft есть инструмент для создания таких записей:

http://www.microsoft.com/mscorp/safety/content/technologies/senderid/wizard/

Я знаю, что у этого уже есть принятый ответ, но это для других, у кого могла быть такая же проблема, как у меня, и закончилась здесь. У меня был сайт и письма, отправленные с моего сайта, в спам-боксы. Даже если я пытался использовать phpmailer и добавлял почтовый сервер наших компаний в качестве SMTP.

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

Это означает, что если принимающая сторона выполняет поиск DNS или IP-поиск на вашем почтовом сервере. Почтовый сервер сообщает получающей стороне, что он действительно был отправлен от него или его ассоциированных IP-адресов, и поэтому он не попадет в спамбокс.

Однако, если вы это сделаете, нет необходимости в phpmailer, и работает стандартная функция mail ().