Intereting Posts
как вызвать функцию контроллера из вида в кодегниторе? Как запустить тест PHPUnit Selenium без запуска нового окна браузера для каждой функции? Какова таблица лидеров лучшей практики с php, mysql, memcached? Исключение значений в операторах PDO Я пытаюсь отправить эту форму андроида json на php-сервер Понимание файлов PHP и вызовов AJAX Отменять уведомление вкладки страницы Не удается получить доступ к массиву сеансов с помощью php доступ запрещен для пользователя «root» @ localhost mysql error 1045 PHP – изменение размера изображения на сервере до загрузки браузером Переменная PHP, определенная в «родительском» файле, не распознанная в «обязательном» файле изображение не извлекается из базы данных в html-форму, используя php Работа со специальными символами в именах объектов Отобразить последнюю ленту новостей Twitter «дата создана» с использованием tmhOAuth и PHP Как удалить каталог, который не пуст?

Предотвращать отправку писем, обрабатываемых как нежелательные письма, используя функцию php mail

Я написал PHP-скрипт для отправки писем.

Мой сценарий выглядит так:

$headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $headers .= 'From: abc@yahoo.com' . "\r\n"; // Email Variables $toUser = "someone@yahoo.com"; // recipient $subject = "testing"; // subject $body = "<html><body><p> Example of including an image via html \<img\> tag: <br> <img src='../images/profile.jpg'> <br> My new picture <br></p></body></html>"; // content if (mail($toUser,$subject,$body,$headers)) { echo "sent"; } else { echo "failed"; } 

Ну, конечно, я использую действительный адрес электронной почты для отправителя и получателя. Я получил электронное письмо, но оно отправляется на нежелательную почту. Поэтому я пошел на поиски Google. Это из-за моей проблемы с «заголовком» скрипта? Если это не так, то что может заставить мой скрипт отправлять нежелательную почту? Любое решение?

Попробуйте следующее:

 $headers ="From:<$from>\n"; $headers.="MIME-Version: 1.0\n"; $headers.="Content-type: text/html; charset=iso 8859-1"; mail($to,$subject,$body,$headers,"-f$from"); 

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

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

Например: список баллов SpamAssassin

1. Проверьте содержимое почты

Как намекают другие, это, вероятно, отмечено как спам, потому что ваша почта выглядит как спам.

Я не уверен, что вы опубликовали сценарий, который вы проверили.

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

 X-Spam-Status: Нет, оценка = 4.9 требуется = 5.0 тестов = BAYES_50, HTML_IMAGE_ONLY_04,
         HTML_MESSAGE, MIME_HTML_ONLY, NO_DNS_FOR_FROM, NO_RELAYS autolearn = no
         версия = 3.2.5

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

2. IP-адрес почтового сервера

Другим аспектом, который стоит проверить, будет IP-адрес вашего почтового сервера. Любая почта, исходящая из динамических IP-адресов, потенциально может рассматриваться как СПАМ.

3. Блок-листы

Также проверьте, указан ли ваш IP-адрес в одном из списков блоков. Для начала проверьте свой IP-адрес на странице http://www.spamhaus.org/lookup.lasso .

Используйте mxtoolbox.com для проверки IP-адресов серверов в черный список или нет. Кроме того, этот веб-сайт может помочь вам с несколькими проверками, связанными с электронной почтой.

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

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

если домен вашего сайта – mydomain.com, то в заголовках From обязательно используйте someone@mydomain.com.

У меня была такая же проблема:

Проблема заключается в том, что когда вы указываете тип контента перед частью «From:», почта приходит как спам.

Но если вы укажете «От:» перед частью контента, это будет обычной почтой и заставит вас улыбнуться и любопытствовать.

Как сказал schnalle, одна проблема заключается в том, что сервер smtp, который вы используете для отправки электронной почты, и тот, который вы указываете как «От», отличается от того, что домен домена будет таким же, как на сервере, на котором вы работаете.

Таким образом, вы можете использовать сервер yahoo для отправки электронной почты (проверьте, разрешают ли они удаленное соединение smtp, но я предполагаю, что они это делают), подключаемые smtp, и это решит 1 проблему.

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

Я предлагаю вам phpMailer , бесплатный и открытый php-класс с открытым исходным кодом для отправки электронной почты, легко использовать (я использую его для отправки почты через сервер gmail)

  1. На вашем сервере попробуйте отсортировать вашу базу данных SPF (Отправитель политики, Google для записи SPF).
  2. Убедитесь, что вы отправляете свои электронные письма из существующей учетной записи на своем сервере / домене.
  3. Убедитесь, что у вас есть ответ на адрес в заголовке.

Это основные вещи, которые вы можете попробовать.

Удалите Content-type: text/html и добавьте $headers .= "X-Priority: 2\nX-MSmail-Priority: high"; чтобы избавиться от спама. Этот метод проверен и проверен.

  **This Works Perfectly fine for me** $to="reciever@reciever.com"; $subject="This is Your Message"; $from = 'Sender <noreply@sender.com>'; $body='Hi '.$name.', <br/><br>Now You can See Yor main in inbox'; $headers = "From: " .($from) . "\r\n"; $headers .= "Reply-To: ".($from) . "\r\n"; $headers .= "Return-Path: ".($from) . "\r\n";; $headers .= "MIME-Version: 1.0\r\n"; $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; $headers .= "X-Priority: 3\r\n"; $headers .= "X-Mailer: PHP". phpversion() ."\r\n"; mail($to,$subject,$body,$headers); 

проблема в том, что сервер, с которого вы отправляете почту, не является сервером yahoo. большинство спам-фильтров проверяют, совпадают ли они, иначе это было бы (и было бы или возможно) легко подделать отправителя. когда-либо задавались вопросом, почему вы получаете спам от bill.gates AT microsoft.com или свой собственный почтовый адрес?

У вас есть два решения:

  • используйте SMTP для SMTP, используя данные abc@yahoo.com для отправки почты с abc@yahoo.com;
  • использовать другие, с вашего собственного домена;

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

Я могу использовать его для отправки почты с вложениями в Gmail. Однако вложения не работают для hotmail. Надеюсь, это поможет =)

Вы можете проверить файлы здесь .