Функция PHP mail() не работает на выделенном сервере GoDaddy
У меня есть веб-сайт, который размещен на GoDaddy на виртуальной выделенной платформе, и я не смог получить mail()
функция для правильной работы в моем сценарии PHP. Я пытаюсь отправить электронные письма с проверочными кодами людям, когда они впервые регистрируются на моем сайте, и mail()
Функция отлично работает для адреса Gmail, но не для других, таких как AOL или даже служба электронной почты GoDaddy!
Я попытался поговорить с несколькими представителями поддержки GoDaddy, но они не очень помогли в этом вопросе. Я посмотрел в Интернете, и кажется, что это очень распространенная проблема с людьми, которые размещают свои сайты на GoDaddy. Я не получаю отскочившие электронные письма, когда я не получаю электронные письма, поэтому трудно понять, что происходит.
Вот мой PHP-код:
$sendtoemail = 'newsignup@aol.com';
$emailsubject = "Please validate your email";
$emailbody = "Validation info, blah blah.";
$emailheader = 'From: admin@example.com' . "\r\n" .
'X-Mailer: PHP' . "\r\n" .
'Reply-To: admin@example.com' . "\r\n" .
'-fadmin@example.com';
mail($sendtoemail, $emailsubject, $emailbody, $emailheader);
Я получил несколько ошибок при проверке /usr/local/psa/var/log/maillog
(доступ через PuTTY SSH), что все закончилось в: deferral: ./Maildir:_No_such_file_or_directory/
Я также активировал обратный DNS на своей учетной записи хостинга и создал запись DNS SPF, которая отправляет электронную почту через "GoDaddy only", и установил флажок "Включить PTR" для поиска DNS. Это было в разделе "TXT (текст)" "Редактора файлов зон" в диспетчере DNS GoDaddy. (Надеюсь, это имеет больше смысла для вас, чем для меня).
4 ответа
Я не уверен, поддерживает ли GoDaddy PHP Mail, обычно это большая проблема для веб-хостинга, потому что он используется в сценариях для рассылки спама.
Лучше всего проверить, какие расширения PEAR на хостинге есть у GoDaddy, если у них есть почта PEAR, вы можете это использовать. Если нет, то вам следует попробовать использовать аутентифицированную отправку почты.
Я могу дать вам пример PEAR и Authenticated mail, если вам нужно.
Это старая ветка, но я подумал, что я бы добавил свой опыт на случай, если он поможет кому-то другому.
У меня были очень похожие проблемы с mail(), и я позвонил в службу технической поддержки GoDaddy. Я был на телефоне в течение 2 часов, и после 30 или около того тестовых звонков в mail() (они даже загрузили свой собственный скрипт 'testmail') я не получил ни одного электронного письма успешно (хотя mail () вернул значение 1 успешно. Конечным результатом было то, что он сказал мне, что реле сервера электронной почты были "поставлены в очередь". Через два часа один парень из службы технической поддержки и его "системный администратор"... все та же проблема.
Решением было использовать phift из библиотеки http://swiftmailer.org/ вместо простой старой функции mail (). Письма отправляются немедленно с помощью swiftmailer. Надеюсь, это поможет кому-то еще!
Излишне говорить, что я сменил хостинг-провайдеров!
Вам нужно использовать переменные по умолчанию PHP mail() для GoDadday, я не знаю, но когда я использовал ваш фрагмент, он не будет работать и для меня, но с помощью стандартных переменных я получил почту; и да, не используйте переменную для выделенного адреса электронной почты, поместите в функцию mail (), как я,
надеюсь, что надежда будет работать и для вас;
$subject = "Please validate your email";
$message = "Validation info, blah blah. 2nd msg";
$Header = 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$Header .= 'From: Lux <info@luxstyles.com >' . "\r\n";
if(mail('info@luxstyles.com', $subject, $message, $Header))
echo "email sent";
else
echo "email sending fail";
Поэтому я немного поработал, используя почтовую функцию php на хостинге Godaddy Deluxe. Он отправлял на мою учетную запись gmail, но реальная учетная запись электронной почты, использующая домен, который был на godaddy, не получала почту. Я должен верить, что есть какой-то метод безумия. Я предлагаю попробовать другой адрес электронной почты, если вы не получаете почту от mail(). Я знаю, что это мешает вашей идеальной настройке того, куда вы хотите отправлять электронные письма, но, по крайней мере, вы получаете электронные письма. Возможно, вы могли бы использовать прием переадресации, чтобы доставить почту в выбранный почтовый ящик, как только вы ее получите.