Intereting Posts

phpMailer не прибывает в Hotmail?

После настройки записи SPF я все еще здесь, чтобы проверить, почему я не могу получить это письмо в учетной записи hotmail. Я могу отправить его в gmail без проблем. Проверьте правильность кода и правильность записи SPF:

<?php require_once 'PHPmailer/class.phpmailer.php'; $mail = new PHPMailer(); $body = "Thankyou for your Purchase. <br/><br/> Here is your Policy! You are now Protected during your Travels."; $mail->AddAddress('$payer_email'); $mail->From = "noreply@example.com"; $mail->FromName = "Name"; $mail->Subject = "Thankyou for Your Purchase"; $mail->MsgHTML($body); $mail->AddAttachment("tosend/xxx.pdf"); if(!$mail->Send()) { echo "There was an error sending the message"; $sql = "UPDATE purchases SET policy_sent = 'Not Sent' WHERE id = '$lastid' "; $stmt = $mysqli->query($sql); $mysqli->close(); exit; } echo "Message was sent successfully"; $sql = "UPDATE purchases SET policy_sent = 'Sent', email_to = '$payer_email' WHERE id = '$lastid'"; $stmt = $mysqli->query($sql); $mysqli->close(); ?> 

Вот SPF:

 v=spf1 a mx include:secureserver.net ~all 

Все ли они правильно настроены?

Имел ту же проблему. Я проверил весь скрипт 30 раз. Каждый параметр каждый. и, Проверено и перепроверено dns записывает dkim и spf 100 раз.

Ничего не получилось.

Я отправил по электронной почте hotmail / outlook / live о проблеме. Я не ожидал никакой помощи, но через несколько часов проблема была решена.

Это не было в сценарии. Hotmail просто блокирует любое электронное письмо, которое отправляется через большинство веб-страниц. Даже если ваша репутация спама прекрасна. Они поместили ip сервера в белый список, и проблема была решена.

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

Используйте SMTP Auth, а затем Hotmail больше не будет жаловаться. Анонимные письма считаются спамом почти для всех принимающих серверов.

 $mail->SMTPAuth = true; // enable SMTP authentication $mail->Host = "mail.yourdomain.com"; // sets the SMTP server $mail->Port = 26; // set the SMTP port $mail->Username = "yourname@yourdomain"; // SMTP account username $mail->Password = "yourpassword"; // SMTP account password 

Но из. в зависимости от того, имеете ли вы контроль над своим SMTP или нет, вы должны убедиться, что основные элементы, такие как reverse-dns-lookup, настроены правильно


Из-за обсуждения в комментариях я хочу добавить немного больше информации о своем размышлении о том, почему SMTP Auth будет исправлять это:

Если вы используете PHPMailer без определения SMTP-сервера, PHPMailer будет работать в mail режиме, который просто вызовет функцию mail() php.

Сама почтовая функция будет использовать параметры smtp, настроенные в файле PHP-INI, или значения по умолчанию, которые перечислены здесь: http://php.net/manual/en/mail.configuration.php

по умолчанию:

 SMTP = "localhost" smtp_port = "25" 

Поскольку OP настроил локальный почтовый сервер (или почему он установил MX-записи?), Php теперь подключится к этому SMTP-серверу без проверки подлинности. Сервер примет сообщение и отправит его на следующий сервер.

(То же самое применяется, если используется unix 'sendmail)

Каждый Сервер в цепочке и особенно на принимающем сервере теперь может видеть, что используется частный SMTP и не предоставляется Аутентификация. Это уже Spam-Score более 9000, потому что с такой настройкой (теоретически) каждый может использовать этот сервер для отправки писем! Ограничения, как и только из localhost, – это cc. не известно другим серверам, поэтому SMTP считается ретранслятором Open Mail http://en.wikipedia.org/wiki/Open_mail_relay

Переключение PHPMailer на SMTP-Auth (EVEN, если используется локальный SMTP-сервер) добавит эту информацию в запись, созданную сервером при пересылке почты. Запись будет выглядеть так:

 Received: from SERVER1 ([xxx.xxx.xxx.xx]) by mydomain.de with ESMTPA 

Конечный A после ESMTPA теперь сообщает принимающему серверу, что Server1 использовал действительную учетную запись пользователя на mydomain.de для начала попытки отправки, что означает, что SMTP-сервер знает происхождение почты и может предоставлять информацию об отправителе ,

Тем не менее, локальный SMTP-сервер не является известным, поэтому в этом случае он может оказаться «зеленым» и проверен на разных RBL, что в этом случае не должно быть проблемой.

Если (локальный) SMTP-сервер теперь проходит ВСЕ проверки (обратный DNS-поиск, Greylisting, RBL, а что нет) – почта имеет хорошие шансы на успешную доставку, даже если удаленный smtp не используется, поскольку сервер может быть успешно аутентифицирован, а также отправитель, использующий этот сервер. (В противном случае ни одна компания не могла бы настраивать собственные серверы)

Таким образом, использование SMTP-Auth (или любого другого метода проверки подлинности) также будет иметь влияние, даже если удаленный SMTP-сервер не используется.

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

Вы тестировали на реальном сервере? Если да, то какая ошибка вы получили? Включили ли вы отладчик phpmailer, чтобы узнать, какие ошибки он имеет? Если вы не используете SMTP, вы можете проверить это

$mail->do_debug = true;

Если вы используете SMTP, используйте

$mail->SMTPDebug = true;

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

Я также предполагаю, что ответ @ dognose, попросив вас лучше использовать SMTP . Таким образом, ваша электронная почта проходит аутентификацию, которая поможет подтвердить вашу личность.

 $mail->SMTPAuth = true; // enable SMTP authentication $mail->Host = "mail.yourdomain.com"; // sets the SMTP server $mail->Port = 26; // set the SMTP port $mail->Username = "yourname@yourdomain"; // SMTP account username $mail->Password = "yourpassword"; // SMTP account password 

Если $mail->Port = 26; не работает, вы можете попробовать $mail->Port = 25; ,

SPF, который в настоящее время публикуется вашим DNS, недействителен, потому что у вас есть три записи !:

 # dig +short txt immortalinsurance.com "v=spf1 a mx include:smtp.secureserver.net ~all" "v=spf1 mx mx:v=spf1 a mx include:secureserver.net ~all include:secureserver.net -all" "\"v=spf1 a\"" 

Первый действителен; Вы должны удалить два вторых.

Содержимое этой записи является правильным для вашего домена, если вы отправляете почту с 182.50.130.73. Строка «mx» не является абсолютно необходимой, поскольку она указывает на secureserver.net в любом случае, но она может сохранять запросы DNS на принимающих серверах.

Перед отправкой электронной почты с помощью mail () или SMTP убедитесь, что вы создали действительную учетную запись отправителя в своем cpanel.

 From = "noreply@immortalinsurance.com"; 

Это очень важно, если не все отправленные вами сообщения будут помечены как СПАМ и отправятся в нежелательные.

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

Наконец, проверьте почту со всеми тремя основными поставщиками электронной почты, такими как Hotmail, Yahoo и Gmail.

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

Ниже вы можете проверить:

  1. Spf-запись работает только в домене, когда добавлена ​​запись spf и работает только для почты, отправленной с ips / domains, определенных в этом spf. Поэтому убедитесь, что ваш код выполнен с сервера, который существует в вашем spf.
  2. Использование SMTP, как было предложено выше, может повысить уровень управляемости (но это действительно зависит от спам-фильтра получателей). Если вы тестируете на локальном сервере, вы можете использовать SMTP для отправки писем через почтовый сервер, определенный в spf. В противном случае
  3. Если почтовый сервер, который вы используете, является открытым ретранслятором, чем это могло бы (и, вероятно, было бы) причиной для добавления дополнительных спам-очков. Таким образом, убедитесь, что вы используете закрытое реле (например, используемый почтовый сервер не позволяет отправлять почту не прошедшим проверку пользователям)
  4. Проверьте, не отправлен ли почтовый сервер из любого черного списка ( http://mxtoolbox.com/blacklists.aspx предлагает отличный инструмент);
  5. Используйте заголовки сообщений в Gmail, чтобы узнать, видит ли Gmail какую-либо причину добавления спама в ваше сообщение (Howto: https://support.google.com/mail/answer/22454?hl=ru ). Там вы можете найти, работает ли ваш spf (путем поиска «spf = pass»). Это может также работать для Hotmail, если ваша почта будет удалена в папку спама.
  6. Одним из многих правил, применяемых спам-фильтрами, являются проверка ключевых слов (что, я думаю, ваша почта содержит несколько выкл.), Количество текста и т. Д. Убедитесь, что общее качество вашего сообщения хорошее;
  7. PHPMailer по умолчанию использует почтовую функцию php. Вы можете изменить это на sendmail ( $mail->isSendmail(); probaly не работает на Windows, если sendmail не настроен должным образом) или, возможно, проверьте настройки вашего php.ini, какой почтовый сервер используется (используйте ini_set('SMTP', 'yourhost.com'); чтобы переопределить, но это работает только в Windows, насколько мне известно).