Настроить mail php: Настраиваем функцию mail в PHP
Содержание
Общие настройки почты Joomla сайта, урок 25
Тема урока
В этом уроке, посмотрим, как сделать общие надстройки почты Joomla сайта для отправки сообщений пользователям сайта.
Вступление
В общих настройках Joomla, хотелось бы выделить настройки почты. По умолчанию они не настроены, так как требуют ввода пользовательских данных.
Настройка почты позволит отправлять простые текстовые письма (сообщения) пользователям, зарегистрированным на сайте из панели администратора (вкладка Пользователи>>>Массовая рассылка). Отправка писем может производиться по отдельным адресам и группам пользователей.
Как попасть в настройку почты
Настройка почты находится на вкладке Общие настройки>>>Сервер>>>Блок «Настройки почты».
Варианты настройки почты
В системе Joomla предусмотрено три варианта настроить почтовую рассылку. В настройках они называются «Способы отправки».
— Способ PHP mail. Позволяет использовать функцию php (http://php.net/manual/ru/function.mail.php) для отправки почтовых сообщений. Работает в версиях PHP 4,5,7.
— Способ отправки SMTP. Задействует для отправки сторонний сервер отправки электронных писем SMTP, например: Gmail или Яндекс.Почта.
— Sendmail. Если на вашем сервере установлен сервис рассылки электронных писем Sendmail, можно попробовать использовать его.
Как выбрать способ отправки писем
Три способа отправки писем Joomla, ставят первый вопрос, какой способ отправки писем выбрать?
Способ отправки PHP Mail
Данный способ, предполагает, что вы можете создать и активировать почтовый домен и к нему, почтовый ящик для домена сайта на своём сервере.
Стоит отметить, что многие хостинг провайдеры, ограничивают массовую рассылку писем и могут устанавливать лимиты на их отправку. Чтобы не было проблем с хостинг провайдером, узнайте есть ли такие ограничения.
Способ отправки SMTP
SMTP это аббревиатура почтового протокола, Simple Mail Transfer Protocol. Этот способ предполагает, что система Joomla будет рассылать письма, через сторонние SMTP сервера. Такими серверами являются, Яндекс, Gmail, Rambler , Mail, HotMail. Для задействования этого способа нужен аккаунт на одном из этих почтовых сервисов.
Данный способ, априори имеет ограничения по возможному количеству отправок писем. Эти ограничения есть на любом общедоступном сервер SMTP.
Способ отправки Sendmail
Sendmail это почтовый агент (программа) распространяемая Sendmail, Inc. (https://www.proofpoint.com/us/sendmail-open-source) по лицензии «opensource». Программа несколько устарела, но может быть установлена на вашем сервере.
Общие настройки почты Joomla
Посмотрим, как выставить каждый из перечисленных способов отправки писем и сделать тестовую проверку настроек.
Настройка способа отправки почты PHP Mail
Для задействования этого способа, вам понадобится почтовый домен и почтовый ящик на вашем хостинге. Создаются они в административной панели хостинга.
В этой настройке нам нужен только созданный адрес (Email) почтового ящика. Его и вписываем в поле «Email сайта». Не забываем включить отправку почты и включить массовую рассылку. Остальные поля имеют информационное значение.
Примечание: Если не хотите «мусорить» почту на сервере, в поле email для обратных ответов, впишите другой email из общественных почтовых ящиков.
Тестирование
Внизу настройки есть кнопка «Отправить текстовое сообщение», которая служит для тестовой проверки выполненной настройки. Если вы всё настроили правильно и почта на вашем сервисе исправна, то в почтовый ящик созданный на вашем сервере вы получите такое сообщение.
Это тестовое сообщение отправлено с помощью «PHP Mail». Если вы получили его, настройки электронной почты установлены правильно!
Настройка способа отправки почты SMTP
В этом способе отладки рассылки, можно не задействовать сервер хостинга. В этом варианте используем сторонние почтовые сервера Яндекс, Mail, Gmail, Rambler, Hotmail.
К сожалению, все эти сервера имеют строгие лимиты на отправку почты в час или день. Лимиты постоянно меняются, так например на сегодня, для Яндекс это одно письмо можно отправить сразу только 35 адресатам (массовая рассылка).
Для настройки SMTP отправки вам понадобится:
- Свой почтовый ящик (аккаунт) на почтовом сервере- пишем в поле «Имя пользователя SMTP»;
- Адрес почтового сервера SMTP – пишем в поле «SMTP-сервер»;
- Тип соединения (защищен или нет) — пишем в поле «Защита SMTP»;
- Пароль почтового ящика пишем в поле «Пароль для SMTP»
- Порт соединения – пишем в поле «Порт SMTP-сервера ».
Взять эти данные нужно в информационных данных на сервере почтовика. Например для рассылки через Яндекс.Почта это будут такие данные:
- адрес почтового сервера (отправка) — smtp.yandex.ru;
- защита соединения — SSL;
- порт — 465.
Примечание: Для задействования способа рассылки через SMTP заведите отдельный почтовый ящик.
Способ отправки Sendmail
Если на вашем сервере стоит программа Sendmail, в поле:
- Способ отправки выберете Sendmail
- E-mail сайта впишите свой адрес созданный на Sendmail
- В поле «Путь к Sendmail» впишите путь к каталогу Sendmail на вашем сервере.
Вывод
В завершении замечу, три момента:
- Создать полноценную массовую рассылку писем своим сотням пользователям через панель Joomla, без специальных расширений, крайне трудно. Пользователей придется делить на группы и отправку осуществлять вручную. Если хотите это сделать поставьте компонент AcyMailing.
- Однако, базовую рассылку писем из панели Joomla можно отлично использовать для внутрикорпоративного общения, рассылая письма сотрудникам или авторам сайта.
- Нужно помнить, что настройки почты Joomla сильно зависят от настройки вашего сервера. Поэтому чаще, неудачи в настройке почты нужно искать именно там.
©joomla-abc. ru
Другие уроки
- 10 лучших WAMP платформ для CMS Joomla под Windows, урок 3
- 12 Правил оптимизации Joomla сайта, урок 28
- 2 программы FTP клиент для создания Joomla сайта – FilleZilla, WinSCP, урок 4
- 33 первых расширения Joomla сайта — плагины и компоненты для расширения функционала сайта, урок 29
- 5 Программ для работы с изображениями Joomla, урок 6
- Favicon сайта Joomla – как создать и установить favicon на сайт Joomla, урок 13
- Joomla модуль Обёртка (Wrapper)
- Joomla на XAMPP — управление Joomla в автономном режиме на локальной машине, урок 7
- reCAPTCHA версия 2. 0 на сайте Joomla — капча на Joomla сайте
- URL Joomla: SEF, ЧПУ, убрать index урок 59
Отправка почты php через smtp c локального сервера
Главная / Уроки joomla / Отправка почты php через smtp в cms-joomla
Опубликовано 10 января 2018
Изменен: 21 июня, 2020
352
Отправка почты php через smtp популярных почтовых сервисов яндекса, гугла и mail ru, может осуществляться и с локального сервера, если программное обеспечение такого сервера позволяет это сделать.
Одним из таких серверов, является openserver и все что нужно для работы с почтой, у него есть. Использование возможностей таких серверов, позволяет создавать, тестировать и настраивать новые сайты, скрипты и приложения на компьютере, без подключения услуг хостинг-провайдеров.
В этом уроке рассмотрим вариант отправки почты php через smtp на движке joomla, с помощью локального сервера openserver. Чтобы было все наглядно и правильно, лучше конечно создать в яндексе, гугле и mail ru по одному почтовому ящику, а данные для авторизации лучше записать.
В каждом таком сервисе есть возможность отправки писем через smtp (широко используемый сетевой протокол). Именно они производят отправку сообщений, все остальные (сами скрипты, cms и пр.), лишь формирую эти сообщения.
Для настройки отправки почты php через smtp, нужно проделать некоторые шаги:
- Создать почтовый ящик, или несколько yandex, google, mail ru
- Установить и настроить openserver
- Установить joomla на openserver
Затем можно приступать к настройке openserver для отправки почты php через smtp, в данном случае показан шаблон для smtp яндекса. Вместо слова «test» необходимо подставить свои реальные значения.
При необходимости настроить несколько почтовых серверов, лучше всего настроить отправку почты php через smtp в openserver с помощью профилей. В этом случае не придется несколько раз переделывать настройки. Как работать с профилями показано в видеоуроке настройка php для разных cms-систем.
Отправка почты php через smtp яндекса в joomla
В общих настройках системы, в меню «сервер», выставляем следующие параметры:
Включаем режим отправки почты в положение «Да», указываем реальный адрес куда будет отправляться почта и устанавливаем способ отправки-PHP Mail
Как все будет готово, можно отправлять сообщение нажав на кнопку «Отправить тестовое сообщение». Если все правильно настроено, на почту указанную в настройках joomla, придет тестовое письмо.
Отправка почты php через smtp mail ru
В настройках mail ru все точно так же как и в яндексе. Вместо слова «test», подставляем свои данные. После сохранения настроек, опять отправляем тестовое сообщение.
Отправка почты php через smtp google в joomla
В гугле немного сложнее создавать аккаунты и система безопасности там лучше. По этой причине вместо письма придет уведомление безопасности и о дальнейших действиях по подключению приложений.
В любом случае, все будет работать.
В данном уроке были рассмотрены варианты отправки почты php через smtp трех почтовых сервисов. Отправка почты php через smtp Yahoo и Rambler будет происходить точно так же.
Непосредственно в почтовом ящике, в строке от кого, будут указаны smtp тех сервисов, через которые производились отправки. На скриншоте они показаны стрелками.
Если использовать для отправки почты скрипт, то почта будет приходить на почтовый адрес указанный в скрипте, а пересылаться будет через тот smtp, который указан в последних настройках openserver.
Как включить лог сообщений phpmail | REG.RU
На виртуальном хостинге
- чаще всего лог phpmail включают для определения источника рассылки спама;
- данная инструкция применима только к hosting linux;
- mail.log работает только на версии PHP 5. 3 и выше.
Для активации лога необходимо в файл php.ini вставить следующие строки:
mail.add_x_header = On
mail.log = 'путь-до-каталога-хостинга/phpmail.log'
Путь до каталога хостинга имеет вид:
- ISPmanager: /var/www/u1234567/data/
- ParallelsPlesk: /var/www/vhosts/u1234567.plsk.regruhosting.ru/
- cPanel: /var/www/u1234567/
Где u1234567 — ваш логин хостинга.
Как внести изменения в php.ini?
Готово, вы включили логирование сообщений.
На VPS
- 1.
В папке сайта создайте файл info.php и запишите в него следующие строки:
- 2.
Перейдите по адресу ваш_сайт/info.php
Вы можете добавить логирование почты только для конкретного сайта или для всех сайтов на сервере.
- чтобы добавить настройки для одного сайта, необходимо внести записи в файл, путь к которому указан в «Loaded Configuration File», в нашем примере это /var/www/php-bin/user_name/php.ini
- чтобы добавить настройки для всех сайтов на сервере, необходимо внести записи в файл php.ini, путь к которому указан в строке «Configuration File (php.ini) Path». В нашем примере путь до общего файла php.ini выглядит так: /opt/php/5.3/etc/php.ini
- 3.
для логирования сообщений добавьте ниже следующий код в конец файла php.ini.
Права на файл php.ini могут ограничивать запись в него. Поэтому, перед изменением файла разрешите запись в него через панель ISPmanager, или через SSH при помощи команды:
chmod +w /путь/php.ini
Код для настройки логирования
mail.add_x_header = On mail.log = "/var/tmp/php. mail.log"
/var/tmp/php.mail.log — это файл, в который будет записываться лог отправки сообщений посредством php mail. Права на данный файл должны разрешать запись в него. Вы можете дать права на запись через панель ISPmanager, или через SSH, при помощи команды:
chmod +w /var/tmp/php.mail.log
- 4.
Перезапустите сервер Apache, для этого выполните команду:
- CentOS:
service httpd restart
; - Debian, Ubuntu:
service apache2 restart
.
- CentOS:
Готово, вы включили логирование сообщений.
Помогла ли вам статья?
49
раз уже
помогла
Настройка MSMTP для отправки писем PHP mail() через сервисы Gmail и Yandex
Для начала необходимо установить msmtp:
Centos 6. 5 — 7 установка выполняется так:
yum install msmtp
Ubuntu/Debian установка при помощи apt-get:
apt-get install msmtp
Настраиваем:
vi ~/.msmtprc
или
nano ~/.msmtprc
Заполняем файл .msmtprc.
Для Yandex:
account yandex logfile /var/log/msmtp.log host smtp.yandex.ru port 587 from [email protected] keepbcc on auth on user [email protected] password PAss tls on tls_starttls on
Для Yahoo:
account yahoo tls on tls_starttls off tls_certcheck off auth on host smtp.mail.yahoo.com user usr from [email protected] password yourYahooPass
Для Gmail:
account gmail tls on tls_certcheck off auth on host smtp.gmail.com port 587 user [email protected] from [email protected] password yourgmailPass
И устанавливаем права на файл:
chmod 600 ~/. msmtprc
Для проверки функционирования, сделаем тестовое письмо:
echo -e "From: [email protected] \n\ To: [email protected] \n\ Subject: Hello World \n\ \n\ This email was sent using MSMTP via mail.com.ru." >> sample_email.txt
Попробуем его отправить:
cat sample_email.txt | msmtp --debug -a gmail [email protected]
Обратите внимание, что необходимо выбрать аккаунт указав параметр -a gmail, если ввели более одного в файл .msmtprc
Можно также проверить отправку почты так:
echo "hello from mail.com.ru." | msmtp --debug -a default [email protected]
cp -p ~/.msmtprc /etc/.msmtp_php chown www-data:www-data /etc/.msmtp_php
Устанавливаем права для Apache т.к. он может быть запущен от имени другого пользователя, например apache:apache
Редактируем php.ini:
nano /etc/php5/php.ini
или
nano /etc/php.ini
И редактируем sendmail_path =
sendmail_path = "/usr/bin/msmtp -C /etc/. msmtp_php --logfile /var/log/msmtp.log -a gmail -t"
Создаём лог файл
touch /var/log/msmtp.log chown www-data:www-data /var/log/msmtp.log
и перезагружаем Apache:
service httpd restart
php — Как настроить mail.php Laravel для использования встроенной почтовой функции?
Мне нужно отправить электронное письмо через функцию PHP mail()
. Я где-то читал, что мне нужно изменить параметр driver
в config/mail.php
на sendmail
.
По умолчанию это выглядит так:
'driver' => env('MAIL_DRIVER', 'smtp'),
Теперь это выглядит так:
'driver' => 'sendmail',
Также попробовал это:
'driver' => 'mail',
Но все же функция mail()
не работает. Что мне нужно изменить?
15
Oleg
20 Апр 2017 в 19:55
4 ответа
Лучший ответ
Вы можете установить свой почтовый файл конфигурации . env
как
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD="password"
MAIL_ENCRYPTION=tls
Также настройте конфигурацию в config / mail.php как:
'from' => ['address' => '[email protected]', 'name' => 'Test'],
Тогда вы можете очистить кеш:
php artisan cache:clear
php artisan config:cache
php artisan cache:clear
-23
AddWeb Solution Pvt Ltd
22 Апр 2017 в 11:59
Чтобы использовать почтовый сервер, работающий на localhost
, ваш .env
файл должен выглядеть следующим образом (функция PHP mail
не требует имени пользователя или пароля)
MAIL_DRIVER=smtp
MAIL_HOST=localhost
MAIL_PORT=25
MAIL_USERNAME=
MAIL_PASSWORD=
MAIL_ENCRYPTION=null
Затем обновите кеш конфигурации:
php artisan config:cache
22
Ikbel
30 Дек 2018 в 16:05
Вы должны установить свою конфигурацию почты в файле . env. Здесь вы должны установить все свой почтовый драйвер и все детали. Пожалуйста, ознакомьтесь с этой документацией https://laravel.com/docs/5.0/mail.
-1
Jagdish Chaudhary
20 Апр 2017 в 18:09
Чтобы сделать то же самое, что и PHP-функция mail (), в большинстве случаев вам нужно настроить Laravel следующим образом:
Используйте sendmail на .env:
MAIL_DRIVER=sendmail
Хост, пользователь, пароль, порт и шифрование не нужны.
На этом этапе вы можете проверить, работает ли он уже, но иногда также необходим следующий шаг.
Установите новый параметр .env в config / mail.php:
'sendmail' => env('MAIL_SENDMAIL', '/usr/sbin/sendmail -bs')
Установите путь отправки почты в .env. Вы можете проверить sendmail_path
в phpinfo (), но обычно это так:
MAIL_SENDMAIL='/usr/sbin/sendmail -t -i'
51
Max Oriola
16 Мар 2018 в 08:41
Как настроить XAMPP для отправки почты с локального хоста с помощью PHP?
PHP, PHP программы, Веб-технологии, Веб-технологии Вопросы
Чтобы настроить сервер XAMPP для отправки почты с локального хоста, мы должны внести изменения в два файла sendmail.ini и php.ini. Откройте папку xampp. По имени «sendmail.ini» присутствует в файле sendmail, а «php.ini» присутствует в файле php в папке xampp .
Шаг 1:
- Перейдите в C: / xampp / sendmail: откройте файл sendmail.ini в блокноте или любом текстовом редакторе и внесите следующие изменения.
change smtp_server=mail.yourdomain.com to smtp_server=smtp.gmail.com change smtp_port to smtp_port=587 change smtp_ssl=auto to smtp_ssl=tls
uncomment ;error_logfile=error.log to error_logfile=error.log uncomment ;debug_logfile=debug.log to debug_logfile=debug.log write your gmail id in auth_username: auth_username=*****@gmail.com write your gmail assword in auth_password: auth_password=*****
write your gmail id in force_sender: *****@gmail. com change hostname to hostname=localhost
Шаг 2
- Перейдите в C: / xampp / php: откройте файл php.ini в блокноте или в любом текстовом редакторе, перейдите в [mail function] и внесите следующие изменения.
comment SMTP=localhost by putting semicolon infront=>;SMTP=localhost comment smtp_port=25 by putting semicolon infront=>;smtp_port=25 comment sendmail_from= by putting semicolon infront=>;sendmail_from=specify path of file in sendmail_path to sendmail_path=C:\xampp\sendmail\sendmail.exe check if extension=php_openssl.dll is enabled=>If there is semicolon in front then un-comment it by removing that semicolon
После выполнения указанных шагов, если письмо не было отправлено с помощью функции mail, перейдите в C: / xampp / sendmail и откройте error.log, чтобы увидеть, что произошла ошибка.
Примечание. Здесь показана процедура для gmail, но ее можно распространить на другие письма, изменив сервер smtp и номер порта. При использовании gmail позаботьтесь о том, чтобы включить параметр, позволяющий получить доступ к менее защищенному веб-приложению.
Рекомендуемые посты:
Как настроить XAMPP для отправки почты с локального хоста с помощью PHP?
0.00 (0%) 0 votes
PHP mail под Windows. Отправка почты из PHP скриптов
В этой статье я хочу рассказать об отправке почты из 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 сервер, чтобы изменения вступили в силу.
Чтобы протестировать работу почты напишем простенький скрипт:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Simple Mail</title> </head> <body> <?php $addr = $_POST['addr']; $theme = $_POST['theme']; $text = $_POST['text']; if (isset($addr) && isset($theme) && isset($text) && $addr != "" && $theme != "" && $text != "") { if (mail($addr, $theme, $text, "From: vova_33@mail. ru")) { echo "<h4>Сообщение отправлено</h4>"; } else { echo "<h4>При отправке сообщения возникла ошибка</h4>"; } } ?> <form action="mailer.php" method="post"> <p> <label for="addr">eMail:</label> <input type="text" name="addr" size="30" /> </p> <p> <label for="theme">Тема письма:</label> <input type="text" name="theme" size="30" /> </p> <p> <label for="text">Текст письма:</label> <textarea rows="10" cols="20" name="text"></textarea> </p> <p> <input type="submit" value="Отправить" /> </p> </form> </body> </html>
Он создает форму с тремя полями для ввода адреса, темы и содержания письма. Нажатие на кнопку «Отправить» отправит запрос этому же скрипту (строка 23).
Если данные введены, то будет вызвана функция mail (строка 15), которая и отправит письмо. В случае успешной отправки функция возвращает true, в противном случае — false.
Как видите, ничего сложного в настойке почты нет.
Удачи!
PHP: Почтовые функции — Руководство
Как упоминалось ранее, для пользователей Windows существует опция поддельного sendmail. Немного более подробное описание того, как это сделать:
Если у вас есть тестовый сервер под управлением Windows и какой-то комбо WAMP (XXAMP, WAMP Server и т. Д.), Вы заметите, что команда PHP sendmail (mail () ) не работает. Windows просто не предоставляет инструкцию sendmail …
Однако есть простой трюк, чтобы заставить это работать;
1) Загрузите (или воспользуйтесь прикрепленным файлом) sendmail.zip с http://glob.com.au/sendmail/
2) Разархивируйте это в папку на вашем диске c: (желательно использовать простой путь, например c: \ wamp \ sendmail — длинные имена файлов могут вызвать проблемы )
3) Отредактируйте файл PHP. INI (примечание: пользователи WAMP должны получить доступ к своему файлу php.ini из меню WAMP). Перейдите в раздел [функция почты] и измените его как таковое:
[функция почты]
; Только для Win32.
; SMTP =
; Только для Win32.
; sendmail_from =
; Только для Unix.Вы также можете указать аргументы (по умолчанию: «sendmail -t -i»).
sendmail_path = «C: \ wamp \ sendmail \ sendmail.exe -t»
; Принудительно добавить указанные параметры в качестве дополнительных параметров
; в двоичный файл sendmail. Эти параметры всегда заменяют значение
; 5-й параметр mail (), даже в безопасном режиме.
; mail.force_extra_paramaters =
.. и сохраните изменения.
4) Откройте sendmail.ini и измените настройки на:
[sendmail]
; вы должны сменить почту.mydomain.com на ваш smtp-сервер,
; или в каталог «подбора» IIS. (обычно C: \ Inetpub \ mailroot \ Pickup)
; электронные письма, доставленные через каталог получения IIS, вызывают sendmail на
; работать быстрее, но вы не будете получать сообщения об ошибках обратно на вызывающий
; заявление.
smtp_server = mail.yourdomain.com
; smtp-порт (обычно 25)
smtp_port = 25
; домен по умолчанию для этого сервера будет прочитан из реестра
; он будет добавлен к адресам электронной почты, если он не указан
; если вы хотите переопределить значение в реестре, раскомментируйте и измените
default_domain = yourdomain.com
; записывать ошибки smtp в error.log (по умолчанию в тот же каталог, что и sendmail.exe)
; раскомментируйте, чтобы включить ведение журнала
; error_logfile = sendmail_error.log
; создать журнал отладки как debug.log (по умолчанию тот же каталог, что и sendmail.exe)
; раскомментируйте, чтобы включить отладку
; debug_logfile = sendmail_debug.log
; если ваш SMTP-сервер требует аутентификации, измените следующие две строки:
; auth_username =
; auth_password =
; если ваш SMTP-сервер использует pop3 перед SMTP-аутентификацией, измените
; следующие три строки
pop3_server = mail. yourdomain.com
[email protected]
pop3_password = mysecretpassword
; заставить отправителя всегда быть следующим адресом электронной почты, раскомментируйте и
; заполните действующий адрес электронной почты. это повлияет только на «ПОЧТА ОТ»
; команда, она не будет изменять заголовок «От:» содержимого сообщения
; sendmail будет использовать ваше имя хоста и ваш default_domain в ehlo / helo
; smtp приветствие. при необходимости вы можете вручную установить имя ehlo / helo.
hostname =
При первой попытке рекомендуется вести журнал ошибок и отладки, чтобы вы знали, что пойдет не так, если это не сработает.
Force_sender также является необязательным, но рекомендуется во избежание путаницы на стороне сервера.
Очевидно mail.yourdomain.com, [email protected] и mysecretpassword должны быть релевантной информацией для вашего SMTP-сервера.
Теперь перезапустите службы WAMP (в основном Apache, чтобы PHP перечитал его конфигурацию).
Теперь вы можете использовать оператор PHP mail (), как если бы вы пользователь Unix …
Почтовые функции PHP
PHP Mail Введение
Функция mail () позволяет отправлять электронные письма прямо из скрипта.
Требования
Для того, чтобы почтовые функции были доступны, PHP требует установленного и работающего
электронная почта. Используемая программа определяется
настройки конфигурации в файле php.ini.
Установка
Почтовые функции являются частью ядра PHP. Нет установки
необходимо использовать эти функции.
Конфигурация времени выполнения
На поведение почтовых функций влияют настройки в php.ini:
Имя | По умолчанию | Описание | Сменный |
---|---|---|---|
mail.add_x_header | «0» | Добавьте X-PHP-Originating-Script, который будет включать UID сценария, за которым следует имя файла. Для PHP 5.3.0 и выше | PHP_INI_PERDIR |
mail.log | ПУСТО | Путь к файлу журнала, в котором будут регистрироваться все вызовы mail ().Журнал включает полный путь к сценарию, номер строки, адрес и заголовки. Для PHP 5.3.0 и выше | PHP_INI_PERDIR |
SMTP | «localhost» | Только для Windows: DNS-имя или IP-адрес SMTP-сервера | PHP_INI_ALL |
smtp_port | «25» | Только для Windows: номер порта SMTP. Для PHP 4.3.0 и выше | PHP_INI_ALL |
sendmail_from | ПУСТО | Только для Windows: указывает адрес «от», который будет использоваться при отправке почты из mail () | PHP_INI_ALL |
sendmail_path | «/ usr / sbin / sendmail -t -i» | Указывает, где можно найти программу sendmail. Эта директива работает также под Windows. Если установлено, SMTP, smtp_port и sendmail_from игнорируются | PHP_INI_SYSTEM |
Почтовые функции PHP
Функция | Описание |
---|---|
ezmlm_hash () | Вычисляет хеш-значение, необходимое для EZMLM |
почта () | Позволяет отправлять электронные письма прямо из скрипта |
Как настроить WordPress для использования SMTP для отправки электронных писем Учебное пособие
По умолчанию WordPress использует функцию PHP Mail для отправки своих писем.Однако лучше использовать SMTP, поскольку он лучше обрабатывает отправку сообщений, и вы также можете использовать его для отправки электронных писем из сторонней почтовой службы.
Вы можете посмотреть наше короткое видео о том, как настроить учетные данные SMTP на сервере:
youtube.com/embed/z70dy5St930″ frameborder=»0″ allow=»accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture» allowfullscreen=»»/>
Или выполните следующие действия:
Для начала установите плагин с именем WP Mail SMTP, следуя инструкциям нашего руководства по установке плагинов WordPress. После того, как плагин будет установлен и активирован, в разделе Settings появится новое меню под названием Email .Вам нужно будет перейти к нему, чтобы настроить WordPress для работы с SMTP.
На этой странице вы увидите несколько доступных вариантов конфигурации:
Вот их список и их настройки:
- From Email — адрес электронной почты, с которого вы хотите отправлять электронные письма, например, [email protected];
- От имени — имя, с которого будут отправляться ваши письма;
- Mailer — выберите, хотите ли вы использовать функцию Default PHP mail () , учетную запись Gmail / G Suite, Mailgun, SendGrid или другие SMTP-серверы . При выборе режима по умолчанию сообщения будут отправляться с помощью функции PHP mail () без аутентификации SMTP. Параметры Gmail / G Suite, Mailgun и SendGrid требуют дополнительной информации, такой как идентификатор клиента и секрет клиента или ключ API, которые должны быть получены соответствующим поставщиком. Параметр другой SMTP-сервер предложит вам ввести дополнительные сведения о конфигурации, которые мы опишем ниже.
- Return Path — проверьте, хотите ли вы сопоставить путь возврата для ваших писем с отправляемым электронным письмом;
Если вы выберете других SMTP-серверов в качестве почтовой программы, вам будет предложено добавить параметры конфигурации SMTP-сервера.
- SMTP Host — имя хоста для вашего SMTP-сервера;
- Порт SMTP — порт, на котором работает ваш сервер;
- Шифрование — если для этого имени хоста доступно шифрование SSL / TLS, выберите его здесь;
- Auto TLS — если ваш сервер поддерживает шифрование TLS, включите эту опцию;
- Аутентификация — проверьте, требует ли ваш SMTP-сервер аутентификацию;
- Имя пользователя — имя пользователя для вашего SMTP-сервера;
- Пароль — пароль для вашего SMTP-сервера;
После настройки этих параметров нажмите Сохранить настройки внизу страницы.
404 — Страница не найдена
Войти
Запомнить меня • Забыли пароль?
Просмотреть корзину (0)
Переключить навигацию
Дом
Магазин
Просмотреть все
——
Weebly
Виртуальный хостинг
Управляемый VPS
TurnKey
Неуправляемый VPS
Неуправляемый Windows VPS
Зарегистрируйте новый домен
Перенести домены к нам
Состояние сети
Свяжитесь с нами
Счет
Авторизоваться
——
Забыл пароль?
×
Закрывать
Название
Загрузка. ..
Загрузка …
Закрывать
Представлять на рассмотрение
Использование функции mail () в PHP на Ubuntu — Linux Hint
Функция mail () — это встроенная функция PHP, которая используется для отправки электронной почты с локального хоста. Но для отправки электронной почты с помощью этой функции требуются некоторые настройки.Для настройки конфигурации вам потребуется реальная информация о почтовом сервере. Вы можете использовать информацию о почтовом сервере вашего активного хостинг-сервера или любую информацию о бесплатном почтовом сервере. Учетная запись Gmail и информация о SMTP-сервере Gmail используются в этом руководстве для отправки электронной почты с помощью функции mail ().
Настройка конфигурации
Для настройки конфигурации потребуются два файла: файл php. ini и еще один файл, который необходимо настроить для настройки почтового сервера.Следуйте инструкциям ниже, чтобы настроить конфигурацию. На PHP доступно множество пакетов для отправки электронной почты. msmtp — это клиент почтового сервера PHP, который используется в этом руководстве для отправки электронной почты с помощью функции PHP mail ().
Шаги :
Выполните следующую команду, чтобы установить пакет msmtp в Ubuntu для настройки почтового сервера:
$ sudo apt-get install msmtp
Создайте файл конфигурации с именем / etc / msmtprc с помощью следующей команды:
Добавьте в файл следующее содержимое.Добавьте действительный адрес электронной почты для пользователя и действительный пароль для пароля , который будет использоваться для отправки электронной почты. Установите адрес электронной почты отправителя для формы значение.
по умолчанию
tls на
tls_starttls на
tls_trust_file /etc/ssl/certs/ca-certificates.crt
учетная запись по умолчанию
хост smtp.gmail.com
порт 587
9 auth имя пользователя gmail2. com
пароль user_password
от sender_email_address
Выполните следующие команды, чтобы установить владельца и разрешения для файла / etc / msmtprc :
$ sudo chown fahmida / etc / msmtprc
$ sudo chmod 0600 / etc / msmtprc
Откройте файл php.ini и измените следующее содержимое со следующими значениями:
SMTP = smtp.gmail.com
smtp_port = 587
sendmail_path = «/ usr / bin / msmtp -t -i»
Синтаксис :
bool mail (строка $ to, строка $ subject, строка $ message [, смешанные $ additional_headers [, string $ additional_parameters]])
Эта функция может принимать четыре аргумента. Первый аргумент принимает адрес электронной почты получателя. Второй аргумент берет тему письма.Третий аргумент принимает тело письма. Последний аргумент является необязательным и содержит дополнительную информацию об электронном письме в виде строки или массива.
Отправка электронной почты с помощью функции mail ()
В этом разделе руководства показаны различные примеры отправки электронной почты с помощью функции PHP mail ().
Пример 1. Отправка простого текстового сообщения электронной почты
В этом примере показано, как можно отправить простое текстовое электронное письмо с помощью функции mail (). Создайте файл PHP со следующим скриптом.
Вы должны установить действительный адрес электронной почты для переменной от $ до , чтобы получить вывод следующего скрипта. В качестве тела сообщения устанавливается простой текст.
php
// Установите адрес электронной почты получателя
$ равным = «[электронная почта защищена]»;
// Задайте тему электронного письма
$ subject = «Это тестовое электронное письмо»;
// Установить тело письма
$ message = «Тестирует тело письма»;
// Установите информацию заголовка
$ headers = «От: [электронная почта защищена] \ r \ n»;
$ заголовков. = «Ответить: [электронная почта защищена] \ r \ n»;
// Отправить электронное письмо с помощью функции message mail ()
if (mail ($ to, $ subject, $ message, $ headers))
{
echo «Электронное письмо успешно отправлено. \ R \ n»;
}
else {
echo «Электронная почта не отправлена.
«;
}
?>
Следующий вывод появится после запуска сценария с веб-сервера, если функция mail () работает правильно.
Следующие выходные данные появятся, если вы отметите почтовый ящик адреса электронной почты, который был установлен в качестве адреса электронной почты получателя.
Пример 2. Отправка электронного письма в формате HTML
В этом примере показано, как электронное письмо в формате HTML может быть отправлено с помощью функции mail (). Создайте файл PHP со следующим скриптом.
$ message Переменная инициализируется содержимым HTML, которое будет отправлено как тело сообщения электронной почты. В переменной заголовка $ указано, что содержимое электронного письма является HTML.
php
// Установите адрес электронной почты получателя
$ равным = «[электронная почта защищена]»;
// Задайте тему электронного письма
$ subject = ‘Регистрация прошла успешно’;
// Установите тело письма
$ message = ‘
Ваша регистрация успешно завершена.
имя пользователя = fahmida20
пароль = aswQ34ghqw
‘;
// Установить возврат каретки
$ nl = «\ r \ n»;
// Установите заголовок Content-type
$ headers = ‘MIME-Version: 1.0’. $ Nl;
$ headers. = ‘Content-type: text / html; charset = iso-8859-1 ‘.$ nl;
// Установите дополнительную информацию заголовков
$ headers. = ‘To: Mehrab Hossain’. $ Nl;
$ заголовков. = ‘От: Администратор’. $ Nl;
$ заголовков. = ‘Копия: [электронная почта защищена]’. $ Nl;
// Отправить электронное письмо с помощью функции message mail ()
if (mail ($ to, $ subject, $ message, $ headers)) {
echo «Электронное письмо успешно отправлено. \ R \ n»;
}
else {
echo «Электронное письмо не отправлено.\ r \ n «;
}
?>
Следующий вывод появится после запуска сценария с веб-сервера, если функция mail () работает правильно.
Следующие выходные данные появятся, если вы отметите почтовый ящик адреса электронной почты, который был установлен в качестве адреса электронной почты получателя.
Пример 3: Отправить электронное письмо с вложением
В этом примере показано, как можно отправить электронное письмо, вложив текстовый файл. Создайте текстовый файл с помощью следующего сценария.
Содержимое текстового файла считывается и кодируется перед вложением, а функция md5 () используется в сценарии для генерации случайного числа для смешанного содержимого. Вся необходимая информация добавляется в переменные $ headers и $ message перед отправкой электронного письма.
php
// Установите адрес электронной почты получателя
$ равным = «[электронная почта защищена]»;
// Задайте тему электронного письма
$ subject = «Вложение файла»;
// Установить возврат каретки
$ nl = «\ r \ n»;
// Установите случайный хэш, который будет использоваться для смешанного содержимого
$ separator = md5 (time ());
// Прочтите содержимое прикрепленного файла
$ filename = ‘myfile.текст’;
$ content = file_get_contents ($ filename);
$ content = chunk_split (base64_encode ($ content));
// Установите сообщение электронной почты с информацией о вложении
$ message = «-«. $ разделитель. $ nl;
$ message. = «Content-Type: text / plain; charset =» iso-8859-1 «». $ nl;
$ message. = «Content-Transfer-Encoding: 8bit». $ nl;
$ message. = «К письму прикреплен текстовый файл.». $ nl;
$ message. =» — «. $ separator. $ nl;
$ message. =» Content-Type: application / octet-stream; имя = «». $ filename. «» «. $ nl;
$ message. =» Content-Transfer-Encoding: base64 «. $ nl;
$ message. =» Content-Disposition: attachment «. $ nl;
$ message. = $ content. $ nl;
$ message. = «-«. $ separator. «-«;
// Установите заголовок Content-type
$ headers = ‘MIME-Version: 1.0 ‘. $ Nl;
$ headers. = «От: [электронная почта защищена]». $ Nl;
$ headers. = «Reply-To: [электронная почта защищена]». $ Nl;
$ headers. = «Content-Type: multipart / mixed; boundary =» «. $ Separator.» «». $ Nl;
// Отправить электронное письмо с помощью функции message mail ()
if (mail ($ to, $ subject, $ message, $ headers)) {
echo «Электронное письмо успешно отправлено с вложением. \ R \ n»;
}
else {
echo «Электронное письмо не отправлено. \ r \ n «;
}
?>
Следующий вывод появится после запуска сценария с веб-сервера, если функция mail () работает правильно.
Следующие выходные данные появятся, если вы отметите почтовый ящик адреса электронной почты, который был установлен в качестве адреса электронной почты получателя.
Заключение
В PHP существует множество способов отправки электронных писем. Функция PHP mail () не работает должным образом в Ubuntu после настройки конфигурации.В этом руководстве показаны необходимые конфигурации и способ отправки электронных писем с помощью функции PHP mail ().
Как проверить и исправить функцию php mail ()
Функция php mail () позволяет отправлять электронные письма прямо с php
сценарий.
Из этого туториала Вы узнаете, как проверить, правильно ли работает почта php.
Протестируйте почту php () на вашем веб-сервере
1. Создайте тестовый файл php с помощью текстового редактора и сохраните его.
е.грамм. как test.php:
PHP
$ sender = ‘[email protected]’;
$ recipient = ‘[email protected]’;
$ subject = «проверка почты на php»;
$ message = «тестовое сообщение php»;
$ заголовки
= ‘От:’. $ отправитель;
if (почта ($ получатель, $ тема, $ сообщение, $ заголовки))
{
echo «Сообщение принято»;
}
еще
{
echo «Ошибка: сообщение не принято»;
}
?>
2. Измените $ отправителя и $ получателя
в коде.
3. Загрузите файл php на свой веб-сервер.
4. Откройте загруженный файл php в своем браузере на
выполнить скрипт php .
5. Вывод показывает либо «Сообщение принято», либо «Ошибка:
Сообщение не принято ».
chevron_right Сообщение принято:
Откройте свой почтовый клиент, чтобы узнать, было ли сообщение доставлено по указанному
Адрес электронной почты.
(также проверьте папку со спамом!)
Если сообщение было доставлено:
- Все нормально — php mail работает.
Если сообщение не было доставлено:
- Некоторые провайдеры не допускают внешних получателей при использовании почты php.
Измените получателя ($ recipient) в коде на локального получателя.
Это означает использование адреса электронной почты из домена сервера, например
если домен вашего сервера www.yourdomain.tld, затем адрес электронной почты получателя
должно быть [email protected]. - Загрузите измененный файл php и повторите попытку.
- Если он по-прежнему не работает: измените отправителя ($ sender) на локального
электронная почта (используйте тот же адрес электронной почты, что и для получателя). - Загрузите измененный файл php и повторите попытку.
- Обратитесь к своему провайдеру, если он по-прежнему не работает.
Сообщите своему провайдеру
что стандартная функция php «mail ()» возвращает ИСТИНА, но не почта.
быть отправленным.
Рекомендуется включить используемый тестовый скрипт php в
покажите провайдеру, что проблема не в скрипте php
использовал.
chevron_right Ошибка: сообщение не принято
Почта php может быть отключена:
- Войдите в конфигурацию своего веб-сервера и проверьте настройки php.
Некоторые установки php требуют, чтобы вы установили отправителя по умолчанию в
Сначала конфигурация php.
Некоторые провайдеры не разрешают внешним получателям при использовании php
почта:
- Измените получателя ($ recipient) в коде на локального получателя.
Это означает использование адреса электронной почты из домена сервера, например
если домен вашего сервера www.yourdomain.tld, то адрес электронной почты получателя
должно быть [email protected]. - Загрузите измененный файл php и повторите попытку.
- Если он по-прежнему не работает: измените отправителя ($ sender) на локального
электронная почта (используйте тот же адрес электронной почты, что и для получателя). - Загрузите измененный файл php и повторите попытку.
Если вы проверили настройки php, попробовали локального получателя
и он все еще не работает:
- Обратитесь к своему провайдеру, если вы не можете включить php mail ().
Сообщите своему провайдеру, что стандартная функция php mail () возвращает FALSE.
Рекомендуется включить используемый тестовый скрипт php, чтобы показать вашего провайдера,
что проблема не вызвана используемым скриптом php.
Отказ от ответственности: информация на этой странице предоставляется «как есть» без каких-либо гарантий.
Кроме того, Arclab Software не гарантирует и не делает никаких заявлений.
относительно использования или результатов использования с точки зрения правильности, точности, надежности, актуальности или иным образом.
См .: Лицензионное соглашение
Почему функция PHP Mail не отправляет почту?
Теоретически отправка электронной почты с помощью функции PHP mail () должна быть простой задачей.В «mail ()» всего 3 элемента: получатель, тема и сообщение, а электронное письмо доставляется всего с одной строкой кода.
Но, как и многие вещи, которые кажутся такими простыми, функция PHP mail () не всегда работает так гладко, и может быть сложно определить, почему. Это может быть, например, из-за того, что вам не хватает необходимых параметров, есть опечатки в адресе электронной почты получателя или вам нужно настроить ретранслятор SMTP.
Из всех возможных вариантов того, почему ваша PHP mail () не отправляет электронную почту, мы обнаружили, что большинство проблем связано с неправильной настройкой Postfix.Мы подробно рассмотрим Postfix, как его правильно настроить и протестируем, чтобы убедиться, что ваша почта отправляется.
Что такое Postfix?
Postfix — это бесплатный агент передачи почты с открытым исходным кодом, который маршрутизирует и доставляет электронные письма. Он следует протоколу SMTP и работает в Unix-подобных операционных системах, включая macOS.
Postfix настолько широко используется, что предустановлен на большинстве компьютеров, отличных от Windows. Хотя предварительно установить Postfix удобно, это может означать, что он не был правильно настроен, что приведет к сбоям в работе PHP mail ().
Как настроить Postfix?
Прежде чем мы проверим, правильно ли настроен Postfix, давайте сначала проверим, установлен ли он.
В вашем терминале выполните следующую команду:
Любые ошибки, выданные за это время, могут дать некоторое представление о том, что не работает. Но если вы получите ответ, подтверждающий, что он был установлен, смело переходите к следующему разделу.
Если он не был установлен, ознакомьтесь с документацией Postfix или обратитесь к своему хосту за инструкциями по установке.
Postfix имеет несколько требований, которые должны быть выполнены для правильной отправки электронных писем.
Сначала измените локальную конфигурацию Postfix. Вы можете загрузить редактор прямо со своего терминала, выполнив следующую команду:
После открытия убедитесь, что следующие 4 переменные определены следующим образом:
И вуаля! Сохраните изменения и перезапустите Postfix с помощью `sudo postfix reload`.
Мы обнаружили, что наиболее важной из этих переменных является myhostname.Если вы не определите эту переменную, ваша локальная среда не сможет назначить местоположение по умолчанию для отправки электронной почты. Используйте реальный домен или что-то произвольное (как в примере выше) для выполнения этого значения.
Как протестировать Postfix и PHP mail ()
Чтобы проверить, работает ли Postfix, а затем PHP mail (), мы создадим простой скрипт для запуска. В вашем любимом текстовом редакторе или интегрированной среде разработки (IDE) создайте файл с именем `mail.php` и включите следующий код:
Не забудьте заменить переменную `$ to` своим фактическим адресом электронной почты.В своем терминале запустите программу с помощью следующей команды и проверьте свою электронную почту:
Завершение
Отправка электронной почты с помощью PHP mail () довольно проста, что делает ее еще более неприятной, если она работает некорректно. Помните о конфигурации Postfix, если вы столкнетесь с ошибками при отправке.