- How To Send Email From Localhost Using PHP
- Video Tutorial:
- PHP mail под Windows
- При отправке сообщения возникла ошибка
- Отправка почты через SMTP с локального сервера
- Отправка почты php через SMTP-настройка скрипта
- Отправка почты через smtp яндекса
- Отправка почты через smtp mail ru
- Oтправка почты через smtp google
How To Send Email From Localhost Using PHP
In this post about “How to send mail from localhost in php using wamp/xampp”, sometimes we need to test the mail sending function from our development environment. We can send mail from our localhost using some mail configuration by XAMPP/LAMP/WAMP server.
First, we need to enable php_openssl php extensions from php.ini file. I am using GMAIL SMTP server to send mail from localhost and sendmail package.
It is a mail transport agent which can be found in php.ini file. The sendmail package is inbuilt in XAMPP. So if you are using XAMPP then you can easily send mail from localhost.
Video Tutorial:
If you are more comfortable in watching a video that explains about How To Send Mail From Localhost Using XAMPP, then you should watch this video tutorial.
Step 1: we need to enable php_openssl php extensions from php.ini file. For XAMPP, it is located in C:\XAMPP\php\php.ini . You can download from php_openssl.dll.
Step 2: Find the mail function in php.ini file. You can find the code like below.
[mail function] ; XAMPP: Comment out this if you want to work with an SMTP Server like Mercury ; SMTP = localhost ; smtp_port = 25 ; For Win32 only. ; http://php.net/sendmail-from ;sendmail_from = postmaster@localhost ;sendmail_path = "\"D:\xampp\sendmail\sendmail.exe\" -t"
replace with your SMTP configuration parameters like the below,
[mail function] ; XAMPP: Comment out this if you want to work with an SMTP Server like Mercury SMTP = smtp.gmail.com smtp_port = 25 ; For Win32 only. ; http://php.net/sendmail-from sendmail_from = phpflow@gmail.com sendmail_path = "\"D:\xampp\sendmail\sendmail.exe\" -t"
Step 3: Open sendmail.ini which is located on «c:\xampp\sendmail\sendmail.ini» and change SMTP configuration parameters.
[mail function] smtp_server=smtp.gmail.com smtp_port=25 auth_username=phpflow@gmail.com auth_password=XXXXXXX force_sender=phpflow@gmail.com
Step 4: Restart your Apache server.
Step 5: Send mail using php mail() function.
mail("parvez1487@gmail.com","Success","Send mail from localhost using PHP");
Sometimes port 25 is not open, so you need to change to 587 OR 465.
Now you have configured mail from localhost and use it.I hope this php tutorial helps to understand the working functionality of mail and sending mail from localhost using PHP SMTP.
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
auth_username=account_name@mail.ru ; имя вашего аккаунта
auth_password=account_password ; ваш пароль
; следующие три опции используются если перед авторизацией на SMTP сервере требуется авторизация на POP3 сервере
pop3_server=pop.mail.ru
pop3_username=account_name@mail.ru
pop3_password=account_password
; параметр для команды MAIL FROM
force_sender=account_name@mail.ru
Теперь не забудьте перезапустить web сервер, чтобы изменения вступили в силу.
Чтобы протестировать работу почты напишем простенький скрипт:
01 02 03 04 05 06 07 Сообщение отправлено"; 15 > 16 else < 17 echo "38 39При отправке сообщения возникла ошибка
"; 18 > 19 > 20 ?> 21
Он создает форму с тремя полями для ввода адреса, темы и содержания письма. Нажатие на кнопку «Отправить» отправит запрос этому же скрипту (строка 21).
Если данные введены, то будет вызвана функция mail (строка 13), которая и отправит письмо. В случае успешной отправки функция возвращает true, в противном случае — false.
Как видите, ничего сложного в настойке почты нет.
Отправка почты через SMTP с локального сервера
Отправка почты через SMTP с локального сервера позволяет протестировать отправку сообщений с сайта находящемся на локальной машине, или проще говоря, локальном сервере. Для этого можно использовать любой почтовый сервис yandex, google или mail.ru.
Прежде всего, SMTP (Simple Mail Transfer Protocol) — это широко используемый сетевой протокол, предназначенный для передачи электронной почты в сетях TCP/IP. И такими протоколами обладают все популярные почтовые сервисы.
С появлением локальных серверов, отпала необходимость выбора хостинг-провайдера для того чтобы проверить работоспособность отдельных скриптов или cms-систем, а тем более еще и платить за это. Гораздо проще все протестировать на компьютере, ну а затем можно и показать всем что “натворили”.
Многие такие сервера имеют уже встроенное программное обеспечение и необходимый функционал по работе с почтой, нужно его только правильно настроить.
Для проверки работоспособности такой почты необходим самый минимум:
- В качестве локального сервера можно использовать Openserver.
- И простенький скрипт, шаблон которого можно взять чуть ниже.
- Почтовый сервер можно использовать любой.
Отправка почты php через SMTP-настройка скрипта
Шаблон простенького скрипта который можно скопировать чуть ниже, или скачать еще на сотнях подобных сайтов, необходимо отредактировать.
Для начала нужно поменять в шаблоне скрипта некоторые значения.
to – меняем на почтовый адрес куда будет отправлено почтовое сообщение.
subject – тема письма
message – само сообщение, или тело письма.
Можно конечно немного расширить функционал и сделать так, чтобы скрипт выдавал сообщение об отправки почты. Хоть на самом деле отправку производит именно SMTP-сервер, а скрипт лишь формирует сообщение.
Для примера можно написать так:
Все подставленные значения должны быть в кавычках, иначе скрипт выдаст ошибку. После этого можно сохранить скрипт в папку локального сервера.
Например: domains/send/index.php и приступать к настройке отправки почты через SMTP opensrerver.
Отправка почты через smtp яндекса
Почта будет приходить на любой адрес, который будет указан в скрипте вместо значения ‘to’, но обрабатывать и отправлять эту почту будет именно тот SMTP, который будет указан в настройках openserver.
- Запускаем сервер
- Открываем модуль openserver с настройками в меню “почта”
- Заполняем все поля как показано на картинке, при этом, имя пользователя, e-mail отправителя и пароль подставляем от реального почтового ящика на яндексе.
Сохраняем настройки и после того, как сервер будет перезапущен, можно обратиться к самому скрипту. Из папки “Мои сайты”, открыть папку “send” в которой и находится сохраненный ранее скрипт index.php.
К стати, данный скрипт можно сохранить под любым именем, главное чтобы расширение скрипта было “php”
Как только произойдет обращение к данному скрипту, в новом окне браузера появится информация о том, что скрипт отработал.
После этого стоит проверить свой почтовый ящик, адрес которого был указан в скрипте, пришло ли письмо.
Если его нет, значит что-то настроено не правильно, либо письмо попало в папку спам.
Все остальные настройки выглядят аналогично, но на всякий случай дополнительная информация не помешает.
Отправка почты через smtp mail ru
Для того, чтобы настроить отправку почты через SMTP mail ru, необходимо просто заменить параметры яндекса на параметры mail ru.
А чтобы не перестраивать каждый раз локальные сервер, лучше всего настроить разные профили openserver. Как это сделать показано в видеоуроке Openserver настройка php с помощью профилей.
В этом случае достаточно будет просто загрузить профиль и все настройки, которые были указаны для данного профиля будут доступны после перезапуска сервера. Очень удобная штука и работает очень просто.
Для каждого профиля (совсем не важно как он будет называться), должны быть сделаны свои настройки, если конечно планируется использование разных по своим параметрам скриптов, cms-систем и приложений.
Если нет, то можно обойтись и настройками по умолчанию.
Что касается SMTP mail ru, то здесь все эдентично.
Меняются данные яндекса на данные mail ru
Oтправка почты через smtp google
Для того, чтобы настроить отправку почты через SMTP гугла, стоит чуть постараться.
Во-первых, создание самого профиля в гугле сложнее чем в других системах яндекса и mail ru
Во-вторых, система просто так не пропустит письмо, даже если указать свои данные для входа. Для начала она пришлет письмо в котором и будет вся необходимая информация о дальнейших инструкциях.
В остальном же отправка почты через SMTP для гугла настраивается точно так же. Меняются только все данные на gmail.com.
Для настройки отправки почты через другие SMTP, все данные будут примерно одинаковы.
Если у вас все получилось и письма дошли до указанного адресата, значит все сделано правильно. Будет здорово если вы поделитесь своими наработками в комментариях.