PHP mail под Windows / Хабр
В этой статье я хочу рассказать об отправке почты из php скриптов под Windows.
Америку я, конечно, не открою, но надеюсь, что кому-то эта статья будет полезна или просто сэкономит время.
С точки зрения php программиста отправка почты выполняется с помощью стандартной функции mail()
. И вот тут у многих начинающих разработчиков возникает проблема. Скрипт, прекрасно работающий на сервере хостера, выдает ошибки на локальном компьютере.
Обычно эти ошибки имеют примерно такое описание:Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in E:\www\simplemail\mailer.php on line ......
Дело в том, что функция mail сама по себе почту не отправляет, она просто вызывает программу sendmail, которая в дистрибутив web сервера и php интерпретатора
Sendmail, в свою очередь, для отправки почты использует SMTP сервер.
Таким образом, чтобы php скрипт мог отправлять почту нужно установить и настроить sendmail и SMTP сервер.
Версию sendmail для Windows можно скачать здесь.
Установка и настройка выполняется в три этапа.
1) Распаковываем архив на тот же диск, где установлен php. Например, я создал папку C:\wamp\sendmail.
2) Вносим изменения в файл php.ini:
[mail function]
SMTP =
sendmail_from =
sendmail_path = "C:\wamp\sendmail\sendmail.exe -t"
Как видите, нужно только указать путь к sendmail чтобы php мог ее найти.
3) Настраиваем sendmail. Все настройки находятся в файле sendmail.ini (расположен в папке с sendmail).
Но перед тем как приступать к настройке пару слов об SMTP сервере. Вам совсем не обязательно устанавливать сервер на вашем компьютере. Многие почтовые сервисы предоставляют бесплатный доступ к своим серверам.
Ниже я покажу пример настройки sendmail для работы с SMTP сервером mail.ru, но, естественно, вы выбрать любой другой.
Итак, открываем sendmail.ini и устанавливаем следующие параметры:
smtp_server=smtp.mail.ru
; адрес SMTP сервераsmtp_port=25
; порт SMTP сервера
default_domain=mail.ru
; домен по-умолчанию
error_logfile=error.log
; файл в который будет записываться лог ошибок
debug_logfile=debug.log
; очень полезная на этапе отладки опция. Протоколируются все операции, которые выполняет sendmail
[email protected]
; имя вашего аккаунтаauth_password=account_password
; следующие три опции используются если перед авторизацией на SMTP сервере требуется авторизация на POP3 сервереpop3_server=pop.mail.ru
pop3_username=account_name@mail. ru
pop3_password=account_password
; параметр для команды MAIL FROM[email protected]
hostname=mail.ru
Теперь не забудьте перезапустить web сервер, чтобы изменения вступили в силу.
Чтобы протестировать работу почты напишем простенький скрипт:
01 <html xmlns="http://www.w3.org/1999/xhtml"> 02 <head> 03 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 04 <title>Simple Mail</title> 05 </head> 06 <body> 07 <?php 08 $addr = $_POST['addr']; 09 $theme = $_POST['theme']; 10 $text = $_POST['text']; 11 if (isset($addr) && isset($theme) && isset($text) 12 && $addr != "" && $theme != "" && $text != "") { 13 if (mail($addr, $theme, $text, "From: [email protected]")) { 14 echo "<h4>Сообщение отправлено</h4>"; 15 } 16 else { 17 echo "<h4>При отправке сообщения возникла ошибка</h4>"; 18 } 19 } 20 ?> 21 <form action="mailer. php" method="post"> 22 <p> 23 <label for="addr">eMail:</label> 24 <input type="text" name="addr" size="30" /> 25 </p> 26 <p> 27 <label for="theme">Тема письма:</label> 28 <input type="text" name="theme" size="30" /> 29 </p> 30 <p> 31 <label for="text">Текст письма:</label> 32 <textarea rows="10" cols="20" name="text"></textarea> 33 </p> 34 <p> 35 <input type="submit" value="Отправить" /> 36 </p> 37 </form> 38 </body> 39 </html>
Он создает форму с тремя полями для ввода адреса, темы и содержания письма. Нажатие на кнопку «Отправить» отправит запрос этому же скрипту (строка 21).
Если данные введены, то будет вызвана функция mail (строка 13), которая и отправит письмо. В случае успешной отправки функция возвращает true, в противном случае — false.
Как видите, ничего сложного в настойке почты нет.
Удачи!
Источник: кросспостинг из моего блога – www.simplecoding.org.
Настройка почты через SMTP на виртуальном хостинге
Виртуальный хостинг не доступен для заказа с 17 февраля 2022 года.
По умолчанию на виртуальном хостинге ISPserver нет возможности отправлять письма через функцию PHP mail()
.
Поэтому, если вам требуется настроить почтовые уведомления в админке или отправить небольшую рассылку по своим коллегам, потребуется настроить отправку писем через SMTP
. Процесс можно разделить на две части: первая — создание почтового домена, почтового ящика и получение данных для подключения к почтовому серверу, вторая — настройка сайта с полученными данными.
Выбор SMTP-сервера
Есть два способа настройки почты на виртуальном хостинге — через встроенный SMTP-сервер хостинга или сторонние сервисы. Рассмотрим оба варианта.
SMTP-сервер хостинга
По умолчанию на виртуальном хостинге есть собственный SMTP-сервер.
Его особенность — очень узкие лимиты нагрузки: не более 300 писем в сутки. Если вам подходит этот вариант, тогда следуйте инструкции:- Хостинг ISPmanager
- Хостинг cPanel
Хостинг ISPmanager
Откройте панель управления хостингом. Попасть в неё можно из Личного кабинета — раздел
Товары
—Виртуальный хостинг
— выберите ваш хостинг в списке, сверху«Перейти»
.В панели управления перейдите в раздел
Почта
—Почтовые домены
. Нажмите«Создать»
.Введите имя вашего почтового домена. Чтобы улучшить его безопасность и повысить уровень доверия, включите DMARC и DKIM. А чтобы данные в письмах шифровались при передаче, подключите SSL-сертификат.
Для защиты от входящего спама можно подключить SpamAssassin, почтовый антивирус, Greylisting.
Важно! Чтобы почтовый домен на виртуальном хостинге воспринимался почтовыми провайдерами как полностью валидный, его придётся настроить на выделенный IP-адрес. Приобрести его можно в Личном кабинете — раздел
Товары
—Виртуальный хостинг
— выберите ваш хостинг, сверху«IP-адреса»
. При заказе адреса в поле«Домен»
укажите имя вашего почтового домена.После настройки почтового домена перейдите в меню
Почта
—Почтовые ящики
и нажмите«Создать»
. Укажите имя и пароль для нового почтового ящика:После завершения настройки вернитесь в меню
Почта
—Почтовые ящики
. Выберите созданный ящик в списке, сверху«Настройка»
. Откроется окно с данными для настройки почты:Они потребуются в дальнейшем при настройке CMS.
Хостинг cPanel
Откройте панель управления хостингом. Попасть в неё можно из Личного кабинета — раздел
Товары
—Виртуальный хостинг
— выберите ваш хостинг в списке, сверху«Перейти»
.По умолчанию cPanel автоматически создаёт почтовый ящик с именем вашего пользователя. Оно генерируется автоматически и не очень годится для презентабельного адреса — поэтому лучше создать новый ящик. Сделать это можно в разделе
Электронная почта
—Учётные записи электронной почты
—«Создать»
:Панель предложит настроить имя ящика, пароль, объём хранилища под письма на диске хостинга.
Укажите требуемые параметры и нажмите «Создать».
После этого вас автоматически перенаправит в список почтовых ящиков, где вы увидите свежесозданный email. Нажмите напротив него кнопку
— откроется окно с данными для настройки почты по SMTP через выбранный ящик.
Сторонние SMTP-серверы
Для этого отлично подойдёт Яндекс: бесплатный, удобный, до 1000 ящиков. Кроме того, вся почта, с которой мы будем работать, будет всегда храниться на его серверах. Даже если вам придётся перенести сайт, например, на виртуальный сервер, почта всё равно останется с вами — на Яндексе. И даже если сайт вдруг перестанет работать, почта всё равно будет доступна.
Для работы с SMTP Яндекса нам необходимо зарегистрировать наш почтовый домен по ссылке:
После этого запустится процесс подтверждения владения доменом. Для начала скопируйте ваш проверочный код:
Далее вернитесь в панель управления хостингом. Способ настройки записей зависит от панели управления хостинга:
В ISPmanager перейдите в раздел
Главное
—Доменные имена
. Выберите ваш домен в списке и сверху нажмите«Записи»
, потом —«Создать»
:В поле
Имя
укажите«@»
, в полеTTL
—«21600»
, в спискеТип
выберитеTXT (текстовая запись)
. В полеЗначение
нам и понадобится скопированный проверочный код.Нажмите
«Ok»
и вернитесь в кабинет Яндекса.В cPanel откройте раздел
Домены
и перейдите в пунктZone Editor
:Напротив вашего домена нажмите
«Управлять»
:Откроется список с записями вашего домена. Нажмите
«Добавить запись»
справа сверху.В поле
Имя
введите имя вашего домена (обязательно с точкой в конце), в поле
—21600
, в полеТип
—TXT
, в полеЗапись
вставьте проверочный код. После этого нажмите«Добавить запись»
и вернитесь в кабинет Яндекса.
В кабинете Яндекса нажмите «Проверить домен»
. В течение нескольких часов доменные записи обновятся, и почтовый ящик будет подтверждён.
Теперь дело за малым — нужно отредактировать DNS-записи нашего домена так, чтобы почта на него проходила через серверы Яндекса. Для этого вернитесь в панель управления хостингом.
В ISPmanager перейдите в раздел
Главное
—Доменные имена
— выберите ваш домен, сверху«Записи»
. В списке найдите записи типаMX (почтовый сервер)
, выберите их и сверху нажмите«Удалить»
.После этого нужно добавить новую, корректную запись — для этого нажмите
«Создать»
.В поле
Имя
укажите«@»
, в полеTTL
—«21600»
, в полеТип
—«MX (почтовый сервер)»
, в полеДомен
—«mx.yandex.net.»
(именно с точкой на конце), в полеПриоритет
—«10»
. Нажмите«Ok»
для сохранения настроек.В cPanel вернитесь в
Домены
—Zone Editor
, нажмите«Управлять»
напротив вашего домена — откроется список его DNS-записей.Найдите в списке запись с типом
«MX»
и напротив неё нажмите«Редактировать»
.В поле
Имя
укажите имя вашего домена (обязательно с точкой на конце), в полеTTL
—21600
, полеТип
не меняется. В полеПолучатель
укажите«mx.yandex. net»
, в полеВажность
—«10»
, и нажмите«Save record»
.
После настройки проверьте статус MX-записи в кабинете Яндекса.
После этого вам нужно создать первый почтовый ящик на вашем новом почтовом домене. Для этого перейдите в кабинет Яндекса — Пользователи
— Добавить пользователей
. Рекомендуем сразу завести один почтовый ящик, с которого вы будете отправлять рассылки. Обязательно сохраните адрес нового ящика и его пароль.
После создания почтового ящика авторизуйтесь с его данными в кабинете Яндекса и подтвердите согласие с условиями использования сервиса.
После этого откройте раздел Настройки
— Безопасность
и создайте пароль приложений:
После этого можно переходить к настройке почты внутри самого сайта.
Настройка CMS
На этом этапе вам нужно научить сайт отправлять почту через SMTP. Самым простым вариантом является установка плагина, обеспечивающего работу SMTP, и настройка работы почты с его помощью.
Если такой плагин у вас уже установлен, всё, что осталось сделать — указать вашему сайту данные для подключения к SMTP-серверу. В зависимости от того, какой способ организации почты вы выбрали выше, эти данные могут отличаться:
SMTP хостинга:
- SMTP-сервер: mail.<ваш домен>
- Шифрование: SSL
- SMTP-порт: 465
- Авторизация: включена
- Имя пользователя SMTP: имя созданного почтового ящика на хостинге
- Пароль: пароль почтового ящика на хостинге
Сторонние SMTP (Яндекс):
- SMTP-сервер: smtp.yandex.ru
- Шифрование: SSL
- SMTP-порт: 465
- Авторизация: включена
- Имя пользователя SMTP: имя созданного почтового ящика на Яндексе
- Пароль: пароль приложений почтового ящика на Яндексе
На примере самой популярной CMS для сайтов WordPress настроить почту через SMTP можно через плагин WP Mail SMTP.
После установки плагина перейдите в его настройки, выберите метод отправки почты «Прочие SMTP»
. После этого в блоке настроек ниже укажите адрес SMTP-сервера Яндекс (smtp.yandex.ru
), имя пользователя — созданный почтовый ящик, и пароль приложения.
Для Drupal в таких же целях можно использовать SMTP Authentication Support или PHPmailer SMTP. А в Joomla! возможность настройки почты через SMTP встроена в CMS.
Сервисы рассылок
Помимо самостоятельной настройки почты на своём сайте, для рассылки с сайтов можно использовать специализированные сервисы: Mailchimp
, SendPulse
, Unisender
и др. Они не только имеют бесплатные тарифы, которые подойдут для небольших рассылок, но и предлагают множество полезных инструментов: встраиваемые веб-формы, API, аналитика рассылок. В качестве рабочей почты не получится использовать, не тот набор возможностей, но как инструмент маркетинга — как раз.
Send-MailMessage (Microsoft.
PowerShell.Utility) — PowerShell | Microsoft Узнайте Редактировать Твиттер LinkedIn Фейсбук Электронная почта- Артикул
- Модуль:
- Microsoft.PowerShell.Утилита
Отправляет сообщение электронной почты.
Синтаксис
Send-MailСообщение [-Вложения ] [-Скрытая копия <Строка[]>] [[-тело] <строка>] [-BodyAsHtml] [-Кодировка <Кодировка>] [-Копия <Строка[]>] [-DeliveryNotificationOption ] -От <Строка> [[-SmtpServer] ] [-Приоритет ] [-Ответить на ] [[-Тема] ] [-Кому] <Строка[]> [-Учетные данные ] [-UseSsl] [-Порт ] [<Общие параметры>]
Описание
Командлет Send-MailMessage
отправляет сообщение электронной почты из PowerShell.
Необходимо указать сервер Simple Mail Transfer Protocol (SMTP) или команду Send-MailMessage
терпит неудачу. Используйте параметр SmtpServer или задайте для переменной $PSEmailServer
действительный SMTP-сервер.
Значение, присвоенное $PSEmailServer
, является настройкой SMTP по умолчанию для PowerShell. Для большего
информацию см. в разделе about_Preference_Variables.
Предупреждение
Командлет Send-MailMessage
устарел. Этот командлет не гарантирует безопасного подключения к
SMTP-серверы. Хотя в PowerShell нет немедленной замены, мы рекомендуем вам сделать
не использовать Send-MailMessage
. Для получения дополнительной информации см.
Примечание о совместимости платформ DE0005.
Примеры
Пример 1. Отправка сообщения электронной почты от одного человека другому
В этом примере от одного человека к другому отправляется сообщение электронной почты.
Параметры From , To и Subject требуются для Send-MailMessage
. Этот пример
использует переменную по умолчанию $PSEmailServer
для SMTP-сервера, поэтому параметр SmtpServer не нужно.
Send-MailMessage - From 'User01' -To 'User02 ' -Subject 'Test mail'
Командлет Send-MailMessage
использует параметр From указать отправителя сообщения. Параметр To указывает получателя сообщения. Параметр Subject использует текстовую строку Тестовое письмо в качестве сообщения, поскольку необязательный параметр Body не включен.
Пример 2. Отправка вложения
В этом примере отправляется сообщение электронной почты с вложением. » Забыл отправить вложение. Отправка сейчас». -Attachments .\data.csv -Высокий приоритет -DeliveryNotificationOption OnSuccess, OnFailure -SmtpServer ‘smtp. fabrikam.com’
Командлет Send-MailMessage
использует параметр From для указания отправителя сообщения. Параметр To указывает получателей сообщения. Параметр Subject описывает содержимое
сообщения. Параметр Body — это содержимое сообщения.
Параметр Вложения указывает файл в текущем каталоге, прикрепленный к сообщение электронной почты. Параметр Priority устанавливает для сообщения значение 9.0033 Высокий приоритет . Параметр -DeliveryNotificationOption указывает два значения: OnSuccess и OnFailure . отправитель получит уведомления по электронной почте, чтобы подтвердить успешную или неудачную доставку сообщения. Параметр SmtpServer задает для SMTP-сервера значение smtp.fabrikam.com .
Пример 3. Отправка сообщения электронной почты в список рассылки
В этом примере сообщение электронной почты отправляется в список рассылки.
Send-MailMessage -From 'User01' -To 'ITGroup ' -Cc 'User02 ' -Bcc 'ITMgr ' -Subject "Не забудь сегодняшнюю встречу!" -Credential domain01\admin01 -UseSsl
Командлет Send-MailMessage
использует параметр From для указания отправителя сообщения. Параметр To указывает получателей сообщения. Параметр Cc отправляет копию
сообщение указанному получателю. Параметр Bcc отправляет скрытую копию сообщения. Слепой
копия — это адрес электронной почты, который скрыт от других получателей. Параметр Subject — это
сообщение, потому что дополнительный Body 9Параметр 0034 не включен.
Параметр Credential указывает, что учетные данные администратора домена используются для отправки сообщение. Параметр UseSsl указывает, что Secure Socket Layer (SSL) создает безопасный связь.
Параметры
-Вложения
-Скрытая копия
-Тело
-BodyAsHtml
-Копия
-Учетные данные
900 50 -DeliveryNotificationOption-Кодировка
-От
-Порт
-Приоритет
-Ответить на
-SmtpServer
-Тема
-Кому
-UseSsl
90 018 Входные данныеСтрока
Вы можете передать пути и имена файлов вложений в этот командлет.
Выходные данные
Нет
Этот командлет не возвращает никаких выходных данных.
- about_Preference_Variables
- Получить учетные данные
Обратная связь
Просмотреть все отзывы о странице
Конфигурация сервера оповещений TREX
Показать оглавлениеКонфигурация сервера оповещений TREX
В конфигурации сервера оповещений TREX можно установить функцию электронной почты и составить наборы проверок.
Интеграция
Вы настраиваете сервер предупреждений TREX в Ландшафт Конфигурация сервера предупреждений в TREX Admin Tool (Standalone).
Функции
Конфигурация функции электронной почты
Для функции электронной почты можно указать следующие параметры:
Параметр | Описание |
---|---|
Отправитель почты | Указание действительного адреса электронной почты, с которого отправляются электронные письма в случае ошибок Пример: [email protected] |
Получатели почты | Список получателей, разделенных запятыми, которые должны быть проинформированы по электронной почте Пример: [email protected], [email protected], |
Тема письма | Спецификация темы электронных писем для отправки По умолчанию используется следующая тема, содержащая переменные: SAP TREX (%SID%%INSTANCE%) — изменение состояния AlertServer для проверок %NUMCHECKS% |
Отправить почту | При необходимости вы можете отключить функцию электронной почты. нет : деактивирует функцию электронной почты да : активирует функцию электронной почты |
SMTP-сервер | Спецификация SMTP-сервера, используемого для отправки электронной почты Пример: smtp.mycompany.org |
Чтобы проверить конфигурацию функции электронной почты, выберите Отправить тестовое письмо . Это отправляет электронное письмо указанным получателям. Затем проверьте почтовые ящики получателей.
Конфигурация дисплея
Следующие параметры содержат значения по умолчанию, соответствующие большинству требований. При необходимости вы можете изменить значения.
Параметр | Описание |
---|---|
Макс. История Возраст | Указывает максимальный возраст записей на странице История в секундах. Значение по умолчанию: 604800 секунд (одна неделя) |
Макс. Записи истории | Задает максимальное количество записей, отображаемых на История вкладка. Значение по умолчанию: 1000 |
Макс. Результат Возраст | Указывает время в секундах, в течение которого действительны результаты выполнения проверки. Если это значение превышено, система запускает новый прогон проверки. Значение по умолчанию: 30 секунд |
Конфигурация наборов проверок
Дополнительные сведения о настройке наборов проверок см. в разделе Проверки и наборы проверок.
Действия
Запустите инструмент администрирования TREX (автономный) и перейдите к окну Ландшафт: Предупреждение . Чтобы вызвать конфигурацию, выберите Alert Server Configuration .