Функция почты PHP, не отправляющая электронные письма на определенные адреса - PullRequest
6 голосов
/ 28 февраля 2011

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

- me who received email
- pam@companyx.co.uk
- collegue who received email
- bill@companyx.co.uk
- collegue who did not receive emails:
- email 1 - ted@companyx.co.uk,
- email 2 - ted@companyy.co.uk
- collegue who did not receive emails:
- cal@companyy.co.uk
- collegue who did not receive emails:
- emma@companyy.co.uk

Сообщения электронной почты также не принимаются в папке со спамом ..

$from = "companyy <support@companyy.co.uk>";          
$subject = "$username Account Details for companyy.co.uk";     
$message = "You have been registered as an administrator of companyy Online.
You can manage your clients, bills and other account functions online.       

Your Username: $username
Your Password: $password2
Your Four-Digit PIN: $PIN         

Once logged in you can change your password to something you will find easier to remember. Please delete this email once you have changed your settings or memorised them.           

Thank you        

This is an automated response, please do not reply!";

mail($email, $subject, $message, $from);
Header('Location: results.php?msg=Added Successfully');

Ответы [ 5 ]

7 голосов
/ 28 февраля 2011

Вот маленький грязный секрет отправки электронных писем: вы теряете контроль.Как только они покинули ваш сервер, по милости интернет-богов ваша электронная почта достигает места назначения.По пути это «рукопожатия» от одной сети к другой.Он достигает конечного пункта назначения, а затем подвергается множеству спам-фильтров и правил, о которых многие технические специалисты не знают.Например, знаете ли вы, что MSN Hotmail, AOL и т. Д. Не будут принимать более определенного количества писем с сервера (диапазон ip) одновременно?Как только вы достигнете предопределенного (и неопубликованного) предела сервера, электронное письмо будет удерживаться независимо от его рейтинга спама.В конце концов это будет пропущено, но это означает, что запрос пароля, который ваш пользователь делает, не будет мгновенным.Вот еще один лакомый момент - серверы завоевывают «доверие» на основании долговечности домена и других факторов, которые также не опубликованы.Ваш домен живёт долго?Вы включены в черный список 1002 *?Является ли электронная почта спамом (проверьте с помощью инструмента , как этот )

Тогда есть такие сайты, как AOL, где даже качественная электронная почта с серверов хорошего качества просто не доставляется регулярно.(Google "AOL Delivery" для некоторого забавного чтения)

Итак, что делать?Начните с проверки черного списка.Если это хорошо, проверьте заголовки.Соответствует ли адрес отправителя домену, с которого отправляется электронное письмо, и действительна ли эта учетная запись?Это может быть большой спам-флаг.Чтобы избежать этой проблемы, моя компания (которая отправляет более 50 000 писем в день) обычно создает «фиктивные» учетные записи для ответа.Вы в белом списке для пользователей, с которыми вы тестируете?Используют ли пользователи такую ​​программу, как Outlook, которая случайным образом вносит свой черный список?Измените ваше сообщение и посмотрите, улучшится ли доставляемость.Протестируйте с несколькими различными хостами, чтобы увидеть, является ли это только одной конкретной системой.

0 голосов
/ 28 февраля 2011

Проверьте ваше сообщение и убедитесь, что оно отделено от PHP_EOL

Сообщение для отправки.

Каждая строка должна быть отделена LF (\ n). Линии не должны быть больше чем 70 символов.

например:

$message = 'This message was sent via PHP!' . PHP_EOL .
           'It should work ... and it does.' . PHP_EOL . PHP_EOL . 
           'From Display Name' . PHP_EOL;
// In case any of our lines are larger than 70 characters, we should use wordwrap()
$message = wordwrap($message, 70);

При использовании PHP mail

0 голосов
/ 28 февраля 2011

Вы должны отладить $email, может быть, он пустой или фальшивый:

var_dump($email);

Но эта проблема, вероятно, не связана с php. Прежде всего, проверьте какой-нибудь электронный список сайтов, например http://www.mxtoolbox.com/blacklists.aspx

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

0 голосов
/ 28 февраля 2011

у вас может быть IP-адрес, который был занесен в черный список, распространенный в виртуальном хостинге. переместите серверы или перенесите электронную почту на sendgrid или postmarkapp

0 голосов
/ 28 февраля 2011

Похоже, что письма отправлены. Проблемы на принимающей стороне. Проверьте на спам или фильтры. Вы можете войти отправленные письма, чтобы быть уверенным, что было отправлено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...