Mail test

Как тестировать отправку писем в PHP на Windows

Отправка писем — это важная функция веб-сайта. Email может использоваться для подтверждения регистрации, восстановления пароля, отправки уведомления и пр. При написании своего веб-приложения, либо для целей отладки, может понадобиться проверка работы отправки писем на локальном компьютере.

Для отправки писем в PHP используется функция mail. Для успешной работы этой функции, интерпретатор PHP обращается к внешней почтовой программе и передаёт ей отправляемое письмо. Обычно это sendmail в Linux.

Как можно догадаться, это не очень применимо к Windows, и уж тем более к веб-серверу на локальном компьютере. Поэтому для тестирования функции отправки писем придумана почтовая заглушка.

Почтовая заглушка — это программа, которая подменяет роль программы для отправки писем — она принимает письмо от PHP, но не пытается его никуда отправить, а сохраняет на диск. В дальнейшем это письмо можно открыть и проверить корректность использования функции mail.

Установка почтовой заглушки для PHP в Windows

Я устанавливал веб-сервер по этой инструкции, если вы это делали другим способом, то замените пути до файлов на ваши.

В каталоге C:\Server\bin\ создайте новый каталог с названием Sendmail. Теперь в этом каталоге создайте файл sendmail.php со следующим содержимым:

#!/usr/bin/env php > $stream = $is_onefile ? PHP_EOL . str_repeat("-=", 10) . date('Y-m-d H:i:s') . str_repeat("-=", 10) . PHP_EOL : ''; while (false !== ($line = fgets(STDIN))) < //$stream .= ($is_windows ? str_replace("\n", PHP_EOL, $line) : $line); $stream .= $line; >if ($is_prepend && file_exists($file_path)) < $file_contents = file_get_contents($file_path); $stream .= $file_contents; >file_put_contents($file_path, $stream, $is_prepend ? 0 : FILE_APPEND); if ($is_open && $is_windows) < pclose(popen("start /B notepad " . $file_path, "r")); >function mkname($i = 0) < global $mail_dir; $fn = 'mail_' . date('Y-m-d_H-i-s_') . $i . '.eml'; return file_exists($mail_dir . '/' . $fn) ? mkname( ++$i) : $fn; >

Откройте конфигурационный файл PHP, он размещён здесь C:\Server\bin\PHP\php.ini. И добавьте туда одну строчку:

sendmail_path = "C:\Server\bin\PHP\php.exe C:\Server\bin\Sendmail\sendmail.php --dir C:\Server\bin\Sendmail\emails"

Сохраните файл и перезапустите сервер.

c:\Server\bin\Apache24\bin\httpd.exe -k restart

Отлично, теперь все отправленные письма будут сохраняться в каталоге C:\Server\bin\Sendmail\emails\

Для имитации отправки письма используйте следующий код:

Отправленное письмо сохранено в файл mail_2019-06-03_15-14-06_0.eml. Этот файл для правильного отображения нужно открыть почтовой программой.

Также его можно открыть любым текстовым редактором — там вы увидите заголовки почтового протокола и текст письма, в данном случае там будет:

To: nobody@example.com Subject: the subject X-PHP-Originating-Script: 0:test4.php From: webmaster@example.com Reply-To: webmaster@example.com X-Mailer: PHP/7.3.4 hello

Источник

Читайте также:  How to add anaconda python to path

How to Test and Fix the php mail() Function

The php mail() function allows you to send emails directly from a php script.
This tutorial shows you how to test if php mail is working correctly.

Test php mail() on your Web Server

1. Create a php test file using a text editor and save it e.g. as test.php:

$sender = ‘ someone@somedomain.tld ‘;
$recipient = ‘ you@yourdomain.tld’ ;

$subject = «php mail test»;
$message = «php test message»;
$headers = ‘From:’ . $sender;

if (mail($recipient, $subject, $message, $headers))
echo «Message accepted»;
>
else
echo «Error: Message not accepted»;
>
?>

2. Change the $sender and $recipient in the code.

3. Upload the php file to your webserver.

4. Open the uploaded php file in your browser to execute the php script.

5. The output show either «Message accepted» or «Error: Message not accepted».

chevron_right Message accepted:

Open your mail client to see if the message was delivered to the specified email address.
(also check your spam folder!)

If the message was delivered:

If the message was not delivered:

  • Some provider don’t allow external recipients when using php mail. Change the recipient ($recipient) in the code to a local recipient. This means use an email address from the server’s domain, for example if your server domain is www.yourdomain.tld then the recipient’s email should be someone@yourdomain.tld.
  • Upload the modified php file and retry.
  • If it’s still not working: change the sender ($sender) to a local email (use the same email as used for recipient).
  • Upload the modified php file and retry.
  • Contact your provider if it still does not work.
    Tell your provider that the standard php «mail()» function returns TRUE, but not mail will be sent.
    It’s recommended to include the used php test script to show your provider, that the problem is not caused by the php script used.

chevron_right Error: Message not accepted

php mail might not be enabled:

  • Login to your webserver configuration and check the php settings.
    Some php installations require that you setup a default sender in the php configuration first.

Some provider don’t allow external recipients when using php mail:

  • Change the recipient ($recipient) in the code to a local recipient. This means use an email address from the server’s domain, for example if your server domain is www.yourdomain.tld then the recipient’s email should be someone@yourdomain.tld.
  • Upload the modified php file and retry.
  • If it’s still not working: change the sender ($sender) to a local email (use the same email as used for recipient).
  • Upload the modified php file and retry.
Читайте также:  Python reading process memory

If you have checked the php settings, tried a local recipient and it’s still not working:

  • Contact your provider if you are unable to enable php mail().
    Tell your provider that the standard php «mail()» function returns FALSE.
    It’s recommended to include the used php test script to show your provider, that the problem is not caused by the php script used.

Disclaimer: The information on this page is provided «as is» without warranty of any kind. Further, Arclab Software OHG does not warrant, guarantee, or make any representations regarding the use, or the results of use, in terms of correctness, accuracy, reliability, currentness, or otherwise. See: License Agreement

  • ©1997-2023 Arclab®. All other trademarks and brand names are the property of their respective owners.
  • info_outline
  • fingerprint Cookies & Privacy

Источник

Как проверить работу функции mail() php

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

Иногда бывают ситуации, когда не совсем очевидно, на сайте отправка писем настроена, но письма не доходят или не отправляются. В этой ситуации самое простое решение — проверить функцию mail() php, а работает ли она? Или же возможно ограничена отправка писем?

Для проверки работоспособности PHP-функции mail() нужно создавать тестовый PHP-файл (например, mailtest55.php) следующего содержания:

".$_POST['email'].".
"; >else< $message = "Failed sending message to ".$_POST['email'].".
"; > >else< if (isset($_POST['submit']))< $message = "No email address specified!
"; > > if (!empty($message))< $message .= "

n"; > ?>
e-mail ">
subject
message
 

Загрузите созданный файл в рабочую папку веб-сайта, доступную по HTTP-протоколу (там где располжен index.php index.html).

Запустите файл, набрав его адрес (URL) в адресной строке браузера, например: http://example.com/mailtest55.php

Введите в поля открывшейся страницы адрес электронной почты, тему и текст проверочного сообщения и нажмите на кнопку «send», чтобы отправить сообщение.

В случае успешной отправки на странице появится сообщение вида «Email has been sent to . ». В противном случае появится сообщение вида «Failed sending message to. ».

Источник

Как проверить работу функции mail()?

Загрузите созданный файл в директорию сервера, доступную по HTTP-протоколу (public_html, www, htdocs или другую в зависимости от конфигурации сервера).

Запустите файл, набрав его адрес (URL) в адресной строке браузера, например: http://domain.ru/testmail.php.

Введите в поля открывшейся страницы адрес электронной почты, тему и текст проверочного сообщения и нажмите на кнопку «send», чтобы отправить сообщение.

В случае успешной отправки на странице появится сообщение вида «Email has been sent to . ». В противном случае появится сообщение вида «Failed sending message to. ».

Если отправить письмо с помощью такого проверочного файла не удалось, обратитесь к системному администратору с просьбой настроить функцию mail() на вашем сервере.

  • Что такое «ключ базы данных»?
  • Что такое WebAsyst Installer?
  • Как изменить пароль для входа в Installer
  • Цветовое обозначение прав доступа в WebAsyst Installer
  • Кто такой «главный пользователь»?
  • Для чего нужны разные данные доступа?
  • В каких папках хранятся файлы, загруженные в аккаунт?
  • В каких файлах хранятся параметры подключения к базе данных?
  • Для чего нужен файл php.ini?
  • Как узнать конфигурацию PHP?
  • Как изменить параметр в конфигурации PHP?
  • Как загрузить файлы на сервер по FTP?
  • По FTP не виден файл .htaccess
  • Добавление собственных записей в файл .htaccess
  • Как проверить работу функции mail()?
  • Как проверить работу mod_rewrite?
  • Что такое chmod?
  • Права доступа к файлам и директориям в UNIX-подобных системах
  • Не могу удалить файлы с сервера
  • Как убрать PHPSESSID=. из адресов страниц?
  • Надпись «SMS запрещены» в аккаунте
  • Перевод интерфейса аккаунта на другие языки
  • Перевод интерфейса новых приложений WebAsyst

Источник

Шпаргалка для проверки PHP функции mail()

Шпаргалка для тех, кому надо быстро проверить работу PHP функции mail() . Данная статья будет обновляться по мере необходимости.

$to = 'info@dmitriyilichev.com'; $from = 'robot@dmitriyilichev.com'; $subject = 'Тестовое письмо'; $message = 'Это письмо было отправлено для проверки работы функции mail()'; $headers = 'From: ' . $from . "\r\n" . 'Reply-To: ' . $from . "\r\n" . 'X-Mailer: PHP/' . phpversion(); if ( mail($to, $subject, $message, $headers) ): echo "Письмо успешно отправлено."; else: echo "При отправке письма произошла ошибка."; endif;

Копируйте, добавляйте в закладки, делитесь в социальных сетях.

Добавить комментарий Отменить ответ

Другие статьи в этой рубрике

По-умолчанию фильтровать записи можно по датам и рубрикам, а мы будем по произвольным полям. И не только записи, но и страницы, и вообще любые другие post_type .

В WordPress есть встроенный планировщик задач. Основная его задача — проверка на обновления ядра и плагинов. Возможности планировщика открыты и для разработчиков.

В «печеньках» можно оказывается хранить массивы! Хотя нет, правильнее будет наверно сказать так: «В куках можно представить данные таким образом, что их можно будет обрабатывать, как массивы».

Столкнулись с необходимостью написания ЧПУ в одном из проектов и делимся опытом по этому поводу.

Не всегда бывает достаточно внесения правок в .htaccess файл для включения жизненно-необходимых для быстрой работы сайта функций, как сжатие и кеширование браузером. Особенно если у вас сервер на NGINX.

Регулярные выражения (Regular expressions, или просто regexp) — механизм, который позволяет осуществлять сложный поиск подстроки по заданному шаблону. Вот как раз о шаблонах мы и поговорим сегодня.

Источник

Оцените статью