Как проверить работает ли функция mail на хостинге разберем детали


9 Отправка письма почтовым событием Битрикс



Как проверить работает ли функция mail на хостинге,

На серверах виртуального хостинга разрешена отправка почты с сайта только при помощи функции PHP mail().

Email, с которого будет происходить отправка писем с сайта, прописывается в панели управления хостингом ISPmanager.

Этот же email необходимо будет прописать в настройках сайта. Совпадение email - обязательное условие корректной работы функции PHP Mail.

Рекомендуется указывать email вида: любое_удобное_имя@домен_вашего_сайта .

Указание ящиков вида: @gmail.com, @yandex.ru и др. приведет к попаданию писем в спам!

Для настройки необходимо зайти в ISP manager >> раздел World Wide Web >> WWW домены

Выбрать домен и в поле E-Mail администратора указать электронный ящик от которого планируется отправлять сообщения.

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

$message = test php mail,

// На случай если какая-то строка письма длиннее 70 символов мы используем wordwrap()

$message = wordwrap($message, 70),

mail(caffeinated@example.com, My Subject, $message),

где caffeinated@example.com email, на который должно прийти сообщение.

Для проверки нужно исполнить скрипт, сделать это можно через браузер, открыв следующую ссылку:

где domain.com название сайта, в корне которого был создан скрипт testmail.php.

Если сообщение «test php mail» пришло на указанный email, то функция php mail работает корректно.

Пример взят из официальной документации по PHP mail http://php.net/manual/ru/function.mail.php

Отправка почты с CMS Drupal 7.

По умолчанию все сообщения с Drupal7 отправляются по средствам php mail(), email отправителя указывается при установке Drupal7.

Необходимо, чтобы email отправителя в Drupal совпадал с e-mail Администратора в панели управления хостингом ISPmanager.

В дальнейшем email отправителя можно будет изменить в административной части Drupal, в разделе: Administration » Configuration » System

Если отправка сообщений с сайта не работает, необходимо проверить, возможно включен модуль для работы почты посредством smtp. Для проверки зайдите в раздел модулей, в административной части сайта Drupal: Administration » Modules

Отключите модуль SMTP, убрав «галочку» возле модуля и сохранив настройку «Save configuration».

Возможно, что отправка сообщений посредством SMTP реализована и другим способом. Для отправки сообщений через SMTP необходимо, чтобы на сайте присутствовал PHPMailer. Файлы PHPMailer по умолчанию находятся в директории ./sites/all/modules/smtp/phpmailer.

Существуют еще несколько способов реализации отправки сообщений сайта через php mail и SMTP. С ними вы можете ознакомиться в документации к CMS

Все сообщения с сайтов на Drupal отправляются посредством внутреней функции Druapl drupal_mail(). Через данную функцию реализовано большинство модулей для отправки. Настройки находятся в файле ./includes/mail.inc

В частности за отправку сообщений отвечают следующие строки:

drupal_mail($module, $key, $to, $language, $params = array(), $from = NULL, $send = TRUE)

Отправка почты с CMS Joomla 3

По умолчанию все сообщения с Joomla отправляются с помощью php mail(), email отправителя указывается при установке Joomla.

Необходимо, чтобы email отправителя в Joomla совпадал с e-mail Администратора в панели управления хостингом ISPmanager.

В дальнейшем email отправителя можно изменить в административной части Jommla в разделе: System » Global Configuration » Server Settings » Mail Settings

В поле «Mailler» нужно выбрать «PHP Mail» или «Sendmail», а так же в поле «SMTP Authentication» выбрать «No».

В Joomla настройки для отправки почты могут быть прописаны в конфигурационном файле configuration.php, который расположен в корневой директории сайта.

В configuration.php присутствуют следующие строки:

public $mailer = mail,

public $mailfrom = admin [at] yourdomain.com,

public $fromname = J25 Демо,

public $sendmail = /usr/sbin/sendmail,

public $smtpauth = 0,

public $smtphost = localhost,

public $smtpsecure = none,

public $smtpport = 25,

$mailer : mail использует функцию mail PHP, sendmail использует SMTP почту на сервере.

$mailfrom : адрес From. Адрес электронной почты, который использует Joomla для отправки почты с сайта.

$sendmail : путь, по которому распложена программа Sendmail. Используется, если $mailer установлено в Sendmail.

$smtpauth : если SMTP сервер требует аутентификацию для отправки почты, то устанавливается в 1. Иначе 0. Используется, если $mailer установлено в Sendmail.

$smtpuser : имя пользователя для доступа к SMTP серверу. Используется, если $mailer установлено в Sendmail.

$smtppass: пароль для доступа к SMTP серверу. Используется, если $mailer установлено в Sendmail.

$smtphost : SMTP хост. Адрес SMTP сервера при отправке почты. Используется, если $mailer установлено в Sendmail.

$smtpsecure : выберите модель безопасности, которую использует ваш SMTP сервер: SSL или TLS. По умолчанию выключено. Используется, если $mailer установлено в Sendmail.

$smtpport : SMTP порт. Наименее защищенные серверы используют порт 25.

В Joomla много модулей, каждый из которых может использовать собственную систему отправки почты с сайта, не зависящую от глобальных настроек самой CMS Joomla. В связи с этим возможна ситуация, когда глобально настроена отправка через php mail, а в конкретном модуле, который, к примеру, отвечает за «Обратную связь», через SMTP.

Отправка почты с CMS WordPress 4

По умолчанию все сообщения с WordPress отправляются при помощи php mail(), email отправителя указывается при установке WordPress.

Необходимо, чтобы email отправителя в WordPress совпадал с e-mail Администратора в панели управления хостингом ISPmanager.

В дальнейшем email отправителя можно изменить в административной части WordPress в разделе: Settings » General

Если сообщения с сайта не отправляются, нужно проверить есть ли плагин по отправке писем через SMTP, если есть то отключить.

Зайдите в раздел: Plugins » Installed Plufins

Если присутствует плагин по отправке через SMTP, то его нужно отключить.

Иногда может возникнуть ошибка:

«Сообщение не удалось отправить. Возможная причина: сервер не поддерживает функцию mail(). »

Для ее решения нужно отредактировать файл на сайте:

Найти в этом файле строчки:

// Set to use PHPs mail()

// Set to use PHPs mail()

Различные модули WordPress могут использовать для отправки писем как php mail(), так и SMTP вне зависимости от глобальных настроек. В связи с этим возможна ситуация, когда глобально настроена отправка через php mail, а в модуле который, к примеру, отвечает за «Обратную связь», через SMTP.

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

Отправка e-mail в PHP

Обычно я пишу вступление о том, почему данная тема так важна для изучения. Но не в этот раз, потому что здесь, уверен, ни у одного человека не возникнет вопрос: Зачем отправлять e-mail в PHP?. Поэтому предлагаю сразу приступить к делу и узнать об этом более подробно, тем более, что проще реализации отправки e-mail через PHP и придумать нельзя, так что поймут даже те, кто не знаком с PHP вообще.

Для начала давайте с Вами разберёмся немного с теорией. Скучно, но поверьте важно. Для отправки e-mail необходим SMTP-сервер. На большинстве платных хостингах он обязательно имеется. Однако, если такой возможности нет (допустим, хостинг бесплатный или очень дешёвый), то тогда можно воспользоваться сторонним SMTP-сервером (например, mail.ru). То есть главное: для отправки необходим SMTP-сервер.

Во-вторых, чтобы принимать e-mail необходим POP-сервер. К чему я всё это говорю. А к тому, что очень часто люди спрашивают на форумах: Почему у меня не работает отправка e-mail в PHP?. А при этом люди пытаются отправить письма с сервера, на котором вообще нет SMTP. Очень важно: PHP e-mail не отправляет! Отправляет e-mail приложение sendmail, которое имеется на операционных системах Unix, на которых и стоят большинство серверов. А PHP просто передаёт команды этому приложению. Надеюсь, объяснил понятно. Поэтому первое, что необходимо сделать - это раздобыть приложение sendmail. Но порадую тех, кто пользуется пакетом Denwer, так как у них это приложение уже встроено. Правда, с одной особенностью. Реальной отправки писем не происходит - они все складываются в директорию tmp/!sendmail. Но если письмо, которое Вы отправили в PHP, там оказалось, то можете быть уверены, что на 99% на реальном хостинге всё будет работать. Хотя, если Вам очень хочется по-настоящему отправлять e-mail, то Вы можете скачать sendmail, настроить его на какой-нибудь SMTP-сервер, например, mail.ru, затем изменить путь к sendmail в php.ini (настройки PHP) и дальше уже радоваться жизни.

А теперь переходим к PHP. Для отправки e-mail используется всего одна функция - mail(). Принимает эта функция четыре параметра, три из которых являются обязательными:

Как видите, всё интуитивно понятно: кому отправлять, какая тема и само сообщение. Если Вы используете пакет Denwer, то после запуска скрипта, Вы сможете найти файл в директории tmp/!sendmail, в котором и содержатся данные Вашего письма. Открыть эти файлы можно либо в блокноте, но лучше открыть их в какой-нибудь почтовой программе (например, The Bat или Microsoft Outlook).

Я не даром написал вперемешку русский и английский текст, чтобы проверить кодировку. Очень часто она распознаётся неправильно, и в результате, пользователи видят абракадабру. Чтобы этого избежать необходимо задать кодировку. И как раз для кодировки, а также для других особых параметров и существует четвёртый аргумент функции mail():

Теперь давайте расшифрую то, что здесь написано. В переменной headers мы задали следующие параметры: в поле От кого будет стоять abc@gmail.com (то есть сообщения можно отправлять далеко не от своего имени). Сообщение также является обычным текстовым (text/plain) в кириллической кодировке (windows-1251), то есть в нашей с Вами родной кодировке, в которой имеется русский язык и английский. И, кстати, /n - это переход на новую строку (аналог
в HTML).

Также сообщения можно отправлять в HTML-формате. Для этого достаточно всего лишь заменить text/plain на text/html. И Вы сможете в сообщении использовать HTML-теги. Только не забывайте, что всякие теги, наподобие:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Она выглядит вот так:

  • BB-код ссылки для форумов (например, можете поставить её в подписи):
  • Комментарии ( 20 ):

    А как сделать автоматическое сообщение вот такие сообщения например это вместо_этого_текста_приклепленный_фаил Вот файл который вы заказали с вместо_этого_текста_название_сайта. Если вы не заказывали данный файл просто игнорируйте это сообщение. или вместо_этого_текста_имя_пользователя на ваш комментарий ответили!?

    Для этого надо делать шаблон письма, например, такой: %user% на Ваш комментарий ответили. Затем через PHP перед отправкой надо заменить с помощью функции str_replace %user% на конкретное имя пользователя.

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

    Это надо сделать в цикле. Если же пользователей много, то здесь всё гораздо сложнее, так как сервер может не выдержать. Для отправки письма большому количеству пользователей нужно запускать скрипт много раз, каждый раз отправляя небольшие партии. Например, при первом запуске отправить 20 писем. При втором ещё 20, при третьем ещё 20 и так далее, пока не будут отправлены все письма. Интервал надо делать хотя бы 30 секунд.

    А если написать /r/nContent-type: text/html, charset=windows-1251 /r/n, mail ($to, $subject, $message, $headers), ?> то письмо отправится на почтовые ящики 1, 2, 3? И как сделать такое уведомление автоматическое, например пользователь отправил письмо на форум, и ему на почтовый ящик такое письмо Вы отправили новое сообщение на форум вместо_этого_текста_название_сайта?

    Да, письмо дойдёт до всех трёх ящиков. Однако, минус данного способа: каждый из получателей увидит адреса других получателей. Сделать уведомление автоматическим элементарно. Например, при добавлении нового сообщения на форум, надо вызвать функцию mail(). Тогда сразу же придёт уведомление.

    Спасибо, а как сделать каждый из получателей не видел адрес других получателей? Или можете сказать как Вы делали такие уведомления?

    Надо через цикл (например, for) по очереди вызывать функцию mail, каждый раз отправляя одному получателю.

    Михаил, очень нужна ваша помощь. на моём тестовом хостинге не работает функция mail, но там можно через сторонний SMTP сервер. Расскажите как им пользоваться,и как его настроить. Прошу расскажите мне или напишите статью. Оооочень надо

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

    извините за нелепый вопрос: а как на этот скрипт попадает пользователь? ведь РНР сидит и работает на сервере. и можно ли каким то образом РНР-скрипты вставлять в HTML страницы.

    Пользователь к нему обращается, отправляя запрос. В HTML-страницах нельзя использовать PHP, но в PHP-коде можно использовать HTML.

    Как проверить, использует ли ваш компьютер UEFI или BIOS

    Краткое описание: быстрое руководство, которые рассказывает о том, как проверить, использует ли ваш компьютер UEFI или BIOS. Мы сделали инструкции как для Windows, так и для Linux.

    Когда вы пытаетесь выполнить двойную загрузку Linux с Windows, вам нужно знать, есть ли в вашей системе режим загрузки UEFI или BIOS. Это поможет вам решить, какой раздел нужно выбрать для установки Linux.

    Я не буду обсуждать, что такое BIOS здесь. Однако я хотел бы сказать вам несколько преимуществ UEFI над BIOS.

    Интерфейс UEFI или Unified Extensible Firmware Interface был разработан для преодоления некоторых ограничений BIOS. Он добавил возможность использовать диски более 2 ТБ и имел независимую от процессора архитектуру и драйверы. Благодаря модульной конструкции он поддерживает удаленную диагностику и ремонт даже без установленной операционной системы и гибкой среды без ОС, включая сетевые возможности.

    Преимущество UEFI над BIOS

    • UEFI быстрее инициализирует ваше оборудование.
    • Предложение «Безопасная загрузка» означает, что все, что вы загружаете до загрузки ОС, должно быть подписано. Это дает вашей системе дополнительный уровень защиты от запуска вредоносного ПО.
    • BIOS не поддерживает раздел размером более 2 ТБ.
    • Самое главное, если вы используете двойную загрузку, всегда рекомендуется установить обе ОС в том же режиме загрузки.

    Если вы пытаетесь выяснить, работает ли ваша система UEFI или BIOS, это не так сложно. Позвольте мне сначала начать с Windows и потом, посмотрим, как проверить UEFI или BIOS на системах Linux.

    Как проверить, использует ли ваш компьютер UEFI или BIOS в Windows

    В Windows «Сведения о системе» в панели «Пуск» и в режиме BIOS вы можете найти режим загрузки. Если он говорит Legacy, ваша система имеет BIOS. Если это говорит UEFI, то это UEFI.

    Альтернатива: если вы используете Windows 10, вы можете проверить, используете ли вы UEFI или BIOS, открыв проводник и перейдите в C: / Windows / Panther. Откройте файл setupact.log и найдите строку ниже.

    Я бы посоветовал открыть этот файл в блокноте ++, поскольку его огромный текстовый файл и блокнот могут зависать (по крайней мере, для меня с 6 ГБ ОЗУ).

    Вы найдете пару строк, которые предоставят вам информацию.

    2017-11-27 09:11:31, Info IBS Callback_BootEnvironmentDetect:FirmwareType 1.
    2017-11-27 09:11:31, Info IBS Callback_BootEnvironmentDetect: Detected boot environment: BIOS

    Проверьте, используете ли вы UEFI или BIOS в Linux

    Самый простой способ узнать, используете ли вы UEFI или BIOS, — искать папку /sys/firmware/ efi. Папка будет отсутствовать, если ваша система использует BIOS.

    Альтернатива: Другой способ — установить пакет, называемый efibootmgr.

    В дистрибутивах Debian и Ubuntu вы можете установить пакет efibootmgr, используя следующую команду:

    После этого введите следующую команду:

    Если ваша система поддерживает UEFI, она выдаст различные переменные. Если нет, вы увидите сообщение о том, что переменные EFI не поддерживаются.

    Это были все самые просты способы того, как проверить, использует ли ваш компьютер UEFI или BIOS. Знаете более быстрый путь — расскажите нам об этом в комментариях

    Заключительные слова

    Найти, что ваша система использует UEFI или BIOS, очень просто. С одной стороны, такие функции, как более быстрая и безопасная загрузка, обеспечивают преимущество UEFI, вам нечего беспокоить, если вы используете BIOS — если только вы не планируете использовать жесткий диск 2 ТБ для загрузки.

    Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

    Отзывы

    Лучезар
    pusopho
    Василиса
    Нифонт
    liketin

    Написать отзыв

    Success! Your message has been sent.