Настройка sendmail php ini

PHP mail под Windows

Настройка sendmail php ini. Смотреть фото Настройка sendmail php ini. Смотреть картинку Настройка sendmail php ini. Картинка про Настройка sendmail php ini. Фото Настройка sendmail php ini

В этой статье я хочу рассказать об отправке почты из php скриптов под Windows.

Америку я, конечно, не открою, но надеюсь, что кому-то эта статья будет полезна или просто сэкономит время.

Sendmail, в свою очередь, для отправки почты использует SMTP сервер.

Таким образом, чтобы php скрипт мог отправлять почту нужно установить и настроить sendmail и SMTP сервер.

Версию sendmail для Windows можно скачать здесь.

Установка и настройка выполняется в три этапа.

1) Распаковываем архив на тот же диск, где установлен php. Например, я создал папку C:\wamp\sendmail.

2) Вносим изменения в файл php.ini:

Как видите, нужно только указать путь к 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 сервер, чтобы изменения вступили в силу.

Чтобы протестировать работу почты напишем простенький скрипт:

Он создает форму с тремя полями для ввода адреса, темы и содержания письма. Нажатие на кнопку «Отправить» отправит запрос этому же скрипту (строка 21).

Если данные введены, то будет вызвана функция mail (строка 13), которая и отправит письмо. В случае успешной отправки функция возвращает true, в противном случае — false.

Как видите, ничего сложного в настойке почты нет.

Источник

Настройка sendmail php ini

Настройка sendmail php ini. Смотреть фото Настройка sendmail php ini. Смотреть картинку Настройка sendmail php ini. Картинка про Настройка sendmail php ini. Фото Настройка sendmail php iniЕсли после установки например LAMP сервера у вас не работают скрипты с функцией php mail(), точней письма просто не отправляются, то это значит что вам нужно установить почтовый сервер, например Postfix. Но Postfix — это огромный с кучей возможностей почтовый сервер, и мне он был не к чему. Мне нужно было лишь заставить работать функцию mail(), точней просто отправлять письма с сервера, например при регистрации, или заказе товара в интернет-магазине, и т.д. Поискав информацию, я нашел очень хороший, минимальный MTA, для таких целей. Таким оказался — SSMTP. Нету не чего лишнего, прост в установке, и настройке. Давайте установим и настроем ssmtp для отправки писем, например через gmail.

Для установки SSMTP выполните в терминале:

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

root=youremailhere@gmail.com
mailhub=smtp.gmail.com:587
AuthUser=yourgmailusername
AuthPass=yourgmailpassword
UseSTARTTLS=YES

По-сути, по таком же примеру можно настроить почту и под любого другого сервиса почты.

Есть еще и другой способ, ниже я приведу пример настроек для yandex.ru

Пишем следующие строчки, и не забываем их изменить под свои данные

root:pupkin@yandex.ru:smtp.yandex.ru:465
UserUbuntu:pupkin@yandex.ru:smtp.yandex.ru:465
www-data:pupkin@yandex.ru:smtp.yandex.ru:465

Сохраняем и закрываем.

И все содержимое заменяем следующим:

hostname=localhost
FromLineOverride=NO
AuthUser=pupkin@yandex.ru
AuthPass=12345
mailhub=smtp.yandex.ru:465
UseTLS=YES

Подставляем свои данные, сохраняем, и закрываем.

Далее откроем php.ini и отредактируем его:

находим параметр: sendmail_path, раскоментируем его и добавляем путь к ssmtp:

Сохраняем изменения и перезагружаем апач:

Sendmail

Но существует и второй способ, и он еще проще. Но вся проблема в том, что он не у всех работает, иногда нужно звонить провайдеру, или теребенить в тех поддержку, чтоб прописали PTR запись

отредактируем php.ini И дадим знать для php, что мы будем отправлять почту, через sendmail

в параметре sendmail_path пропишем следующее:

Пост обновлен! 28.12.2011

Похожие записи

40 Комментариев к “LAMP. Отправка почты функцией PHP mail().”

Круто :3
Буду иметь ввиду…

Добрый день.
Попробовал сегодня второй легкий способ (что с sendmail) на своем LAMP (Ubuntu 11.10)
Во-первых, очень долго отрабатывает скрипт отправки, а во-вторых, на почту все-таки не приходит письмо, которое должно приходить.
Не знаете, в чем может быть проблема?

Проверьте почту в папке спам. Скорей всего письмо попало туда. По крайней мере у меня так было. Еще можете проверить на всякий случай логи.

а вообще в силу того, что письма мои идут в папку спам, я пока отказался от sendmail использую первый способ. Хотя проверял и второй. Но пока не было времени разобраться почему письма в «спам» уходят. Как только решу вопрос, то сразу и обновлю статью

Попробовал ssmtp. Оно отправляет, но кидает в спам. А sendmail вообще не отправляет.

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

Проверьте установлены ли у Вас пакеты:
sandmail-base
sandmail-bin
sandmail-cf

если устанавливаете sendmail, то удалите ssmtp.
После каждого изменения php.ini нужно рестартить апач

Остановился на ssmtp. Мне этого достаточно. Главное проверять, как почта приходит.

Спасибо огромное за статью.

нет за что. Загляните вечерком. Или уже завтра утром. Специально для вас, сегодня еще раз проверю sendmail на свежо-установленном lamp

Автор, ты учебник русского языка вообще видел когда-нибудь? Почитай, а то любой «Джамшут» грамотней пишет.
Про ssmtp молчу, хихикая, поскольку пользуюсь gentoo, а там именно он стоит «из коробки».

1. Я с Украины, и русский язык вообще не изучал, и учебник даже не видел.
2. Я здесь пишу статьи для себя, а не сдаю экзамен
3. Покажите ошибки в орфографии.
4. Поздравляю Вас, что вы на gentoo, зачем тогда вообще читаете эту статью?
5. Нечего сказать по теме, проходите мимо.

Добрый день, Игорь.
Объяснима ли такая ситуация, и, что посоветуете сделать?
Установлен только sandmail, скрипт сайта через php-mail без успешно отправляет письма. Попробовал в консоли: echo aaaa | sendmail your@email.com, на mail и yandex не пришло, а на yahoo пришло.
следовательно sandmail работает, но почему так выборочно? Сервер в америке физически располагается (дешевле и производительнее) или может у них в список Магнитского и наши почтовые сервисы попали?

а вы не смотрели логи? Нету не чего интересного?

Логи конечно смотрел, но интересное, из за отсутствия опыта, не увидел.
При отправке на яндекс было такое сообщение:
(0/0), delay=00:00:02, xdelay=00:00:02, mailer=esmtp, pri=120300, relay=mx.yandex.ru. [77.88.21.89], dsn=4.0.0, stat=Deferred: 451 4.7.1 Sorry, the service is currently unavailable. Please come back later.

Для майла такое было:
delay=00:00:01, xdelay=00:00:01, mailer=esmtp, pri=120302, relay=mxs.mail.ru. [94.100.176.20], dsn=5.0.0, stat=Service unavailable

проверьте почту ящика postmaster@domain.com там должны быть письма с ответами от серверов. У вас на сервере ip белый?

ip белый. Извиняюсь за глупый вопрос: как проверить ящик postmaster@domain.com если он на этом домене не заведен?

Разобрался вроде. Вам нужно в dns прописать PTR запись (нужно чтоб провайдер это сделал), или SPF: http://ru.wikipedia.org/wiki/Sender_Policy_Framework
иначе при проверке mail.ru-сервером вашего домена, он не находит следующую запись, и отвергает ваши письма, считая, что это спам

Посмотрел информацию, но ясности пока не прибавилось. почта домена функционирует на яндексе, соотвественно mx запись ведет на mail.yandex.ru. Отсюда не очень ясно какая запись (txt) должна быть, что верифицировать ip адрес с которого скрипты сообщения отсылают. (на странице вики ссылка на синтаксис как раз битая)

в таком случае к сожалению не чем, не помогу. Самому не хватает знаний

Вот наткнулся на инфу, может когда-нибудь пригодиться: http://sudo.in/node/58

спасибо большое. Пригодиться:)

или настройте отправку через SSMTP (Как написано в начале статьи), там без танцев все работать будет, только что специально у себя, проверял отправку на mail.ru

И такой момент: если настроить отправку через SSMTP нужно ли удалять sendmail?

Спасибо за внимание.

насколько я понял то все нормально. После отправки происходит что-то типа отключения.

ок. А по первой части вопроса почему так могло произойти нет мыслей?

если в php.ini Не прописан sendmail_path, тогда php не будет знать с помощью чего ему отправлять письма. т.е. письма отправляться не должны. По поводу почему у вас то работало, то перестало, к сожалению, конкретно ответить не могу, т.к. я как и Вы (наверное) только учусь, и обо всех нюансах еще знаю:)

спасибо за внимание)

а можно примерчик не через gmail а скожем через mail.ru или yandex?
через gmail пол инета завалено.

без проблем, обновил пост, и показал как можно настроить под яндекс

В конфиге строка
UseSTARTTLS=>YES

Простое человеческое спасибо! ))))

Здравстуйте! Спасибо за статью, помогла! Первый вариант, правда, почему-то не сработал, зато второй сработал. У меня вот какой вопрос: отправлять к себе в локалхост получается, а вот на внешние адреса — нет:(. Выдается connection timed out. Можно ли как-то решить эту проблему? Может быть, дело в том, что я сижу через прокси и с динамическим IP?

к сожалению в связке с прокси не пробовал. не помогу

Источник

PHP — отправка электронной почты через PHP

Дата публикации: 2017-10-19

Настройка sendmail php ini. Смотреть фото Настройка sendmail php ini. Смотреть картинку Настройка sendmail php ini. Картинка про Настройка sendmail php ini. Фото Настройка sendmail php ini

От автора: отправка почты через PHP настраивается с помощью файла php.ini. Откройте файл php.ini, который находится в каталоге / etc/, и найдите раздел с заголовком [mail function].

Пользователям Windows нужно предоставить в этом разделе две директивы. Первая называется SMTP, она задает адрес SMTP-сервера. Вторая называется sendmail_from, она определяет ваш адрес электронной почты. Настройки для Windows должны выглядеть примерно так:

Пользователи Linux должны указать PHP местоположение своего приложения sendmail. Путь и любые требуемые ключи должны указываться в директиве sendmail_path. Настройки для Linux должны выглядеть примерно так:

Настройка sendmail php ini. Смотреть фото Настройка sendmail php ini. Смотреть картинку Настройка sendmail php ini. Картинка про Настройка sendmail php ini. Фото Настройка sendmail php ini

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Отправка обычного текстового сообщения

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

Ниже приводится описание каждого аргумента.

Настройка sendmail php ini. Смотреть фото Настройка sendmail php ini. Смотреть картинку Настройка sendmail php ini. Картинка про Настройка sendmail php ini. Фото Настройка sendmail php ini

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

Настройка sendmail php ini. Смотреть фото Настройка sendmail php ini. Смотреть картинку Настройка sendmail php ini. Картинка про Настройка sendmail php ini. Фото Настройка sendmail php ini

После вызова функции mail, она попытается отправить электронное письмо, после этого она возвращает значение true, если письмо отправлено успешно, или false, если письмо не было отправлено. В качестве первого аргумента функции mail() могут быть указаны несколько получателей, их адреса указываются списком через запятую.

Отправка HTML-письма

Когда вы отправляете текстовое сообщение с использованием PHP, то весь контент будет рассматриваться как простой текст. Даже если вы будете включать в текстовое сообщение HTML-теги, сообщение будет отображаться как простой текст, а HTML-теги не будут отформатированы в соответствии с синтаксисом HTML. Но PHP предоставляет возможность отправлять HTML-письма в формате HTML. При отправке электронных писем вы можете указать Mime-версию, тип контента и набор символов.

Источник

Настройка Sendmail для отправки почты без попадания в Спам

Столкнулся с проблемой: на правильно настроенном сервере Apache с установленными модулями и настроенными доменными записями у провайдера — письма отправленные через функцию mail из скриптов php попадали в спам или не доставлялись вовсе.

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

Вашему вниманию представляю собранный из разных источников, проверенный и используемый способ настройки сервера для правильной отправки писем sendmail.

Система: Ubuntu 20.06
Почтовый сервис: Яндекс

1. Установка Sendmail

Если по какой-то причине не был установлен. Произведите базовую установку и настройку

Вместо noreply@site.ru пишем почту на которую будут приходить отчеты (заголовок Return-Path:).

Заголовок «Return-Path:» является важным заголовком в глазах почтовых сервисов.
Если его не установить, заголовок будет равен примерно такому значению «Return-Path: ».

Очень желательно чтобы значение заголовка всегда совпадало с именем домена с которого отправляется письмо, независимо от значения заголовка «From:», иначе оно может быть отправлено в «Спам» или же отклонено вовсе.

2. Настройка DNS записей

Нам необходимо настроить SPF, DMARC, DKIM записи.

Какая за что отвечает расписывать не буду. В рунете огромное количество инструкций.
Если тоже используете какой-либо почтовый сервис, у них свои подробные инструкции по настройке.

На что следует обратить внимание — чтобы в SPF был прописан IP-адрес сервера.

Затем следует запросить у провайдера DNS-хостинга обратную запись rDNS (PTR-запись).
Привязать свой домен к ip-адресу сервера.

Как правило провайдер самостоятельно ее устанавливает по запросу.

4. Изменить hostname

Установить hostname равный названию нашего домена:

5. Редактировать файл sendmail.mc

Переходим к файлу /etc/mail/sendmail.mc

Нам необходимо настроить заголовки «Received: from» и «Received: by». Они являются важными при определении уровня доверия к серверу отправляющему электронную почту.

Добавляем следующие строки в конце файла перед MAILER_DEFINITIONS

6. Проверяем настройки apache и файервола

Ищем строчки и заменяем www-data на текущего пользователя под которым запущен apache

export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

7. Обновляем конфигурацию и перезагружаем sendmail

Источник

Настройка sendmail под Windows

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

Установка веб сервера на windows
Настройка и защита apache под windows
Бесплатный ДНС сервер
Настройка php
Настройка mysql
Настройка phpmyadmin
Настройка sendmail (эта статья)
Настройка ftp сервера FileZilla

В этой статье я расскажу как установить и настроить sendmail на домашнем сервере под windows.
Для начала скачайте комплект sendmail.
Если у вас уже стоит sendmail можете его удалить, а на его место скопировать скаченные файлы.
Особенно это касается тех, кто устанавливал сервер с помощью xampp.
Дело в том, что в последних версиях xampp лежит новая версия sendmail, лично я так и не смог его запустить, к тому же он работает с уже другим типом конфигурации.
Возможно проблемы с этим новым sendmail и будут решены в дальнейшем, а пока предлагаю использовать старый проверенный вариант, который работает как «трактор».
Так же в архиве лежит две библиотеки, с помощью которых sendmail может работать с защищенными соединениями TLS, типа почты гугла(gmail).

Скачали архив, распаковали, закачали файлы в папку sendmail, если такой папки нет, создайте ее.
Для xampp это путь /xampp/sendmail.
Теперь открывайте настройки sendmail.ini, в архиве находится пример этого файла с русскими комментариями.
Привожу пример файла настроек

; конфигурационный файл sendmail

; здесь укажите сервер исходящей почты
smtp_server=smtp.mail.ru

; порт smtp, если обычный режим отправки, то порт будет 25
; если сервер работает в защищенном режиме (TLS), то порт 465, например почта гугла работает через 465 порт
smtp_port=25

; домен по умолчанию (совсем не обязательно)
;default_domain=local

; лог ошибок
error_logfile=error.log

; лог отправки, необходим на стадии тестирования. содержит весь текст переговоров с сервером при отправке писем.
debug_logfile=debug.log

; Если smtp сервер с авторизацией, укажите логин пароль(без кавычек), если без авторизации ничего не пишите
auth_username=
auth_password=

; если перед отправкой почты сервер требует авторизацию через POP, заполните эти поля
;pop3_server=
;pop3_username=
;pop3_password=

; email адрес, от которого идет отправка, вставится в заголовок «From: »
; если отправка писем идет через mail.ru, здесь обязательно должен быть адрес, через который произведена авторизация.
force_sender=

; хост, который указывается при авторизации в команде ehlo/helo
; указывайте домен, через который авторизуетесь
hostname=mail.ru

Вносите свои данные, логин-пароль и т.д. и все готово.
Сейчас настройте PHP, чтобы он мог использовать sendmail.
Откройте php.ini и найдите следующие строки

Первые строки указанные здесь закройте комментарием как показано (они не нужны), нужна только последняя строка указанная здесь, это путь до sendmail. Укажите свой путь и снимите комментарий (;) если он стоит.
Теперь перегружайте сервер и все готово, функция mail() должна работать.
Если возникают проблемы с отправкой почты, смотрите файлы error.log и debug.log в sendmail(если вы их конечно включили в настройках sendmail.ini)

Другие статьи, посвященные запуску сервера на windows

Установка веб сервера на windows
Настройка и защита apache под windows
Бесплатный ДНС сервер
Настройка php
Настройка mysql
Настройка phpmyadmin
Настройка sendmail (эта статья)
Настройка ftp сервера FileZilla

Комментарии

04.12.2010 админ
Andrei, совсем не обязательно.
Смотря как настроен smtp сервер.
Чаще всего mail.server.ru или smtp.server.ru. А может быть и без поддомена, например просто server.ru.
Это надо узнать там, где smtp сервер находится.

05.12.2010 Sheg
Письмо почему то не доходит.
В error.log:
SSL is not available on this server.
В чём проблема, smtp Гугловский.

09.12.2010 админ
Вячеслав, включите логи.
Лог ошибок и лог отправки и посмотрите в эти файлы.
И сразу все будет ясно.

10.12.2010 Evengar
Вчера всё работало норм, сегодня письмо не доходит через мейл.ру. Ошибка Socket Error # 10054 Connection reset by peer.

11.12.2010 админ
Вячеслав, ну а в debug.log что?
Там ошибок нет, по этим логам письмо отправляется?

11.12.2010 админ
Evengar, ну если вчера отправлялось, а сегодня нет, значит проблемы с вашей связью или с сервером mail.ru

21.12.2010 Алексей
У меня sendmail даже на *.exe никак не реагирует, не говоря о скриптах, и в логах тож ниче нет(((

21.12.2010 админ
Алексей, можно подробнее? Что значит «sendmail на *.exe не реагирует»?

26.12.2010 админ
Виталий, что-то не совсем понятно. вроде начинается защищенное соединение и обрывается.
с другими серверами пробовали коннектиться?

04.01.2011 Алексей К.
Та же проблема с ошибкой:
«Socket Error # 10054 Connection reset by peer.»

И еще, по моему на Unix такой ошибки нету. Но письма все-равно не отправляются.

04.01.2011 админ
конечно лог отправки и лог ошибок можно отключить, просто удалите эту строку из конфига или закройте комментарием (;)

05.01.2011 Алексей К.
Спасибо еще раз! С Новым годом.

10.01.2011 Alex
Подскажите пожалуйста. Я первый раз пытаюсь настроить sendmail.
Вообщем если я правильно понял настройки которые в sendmail.ini это для почты с которой будет отправляться письма, а адресс почты который указан в mail(); это куда будет производиться отправка. Если да, все делаю по примеру, почта у меня на гугле:
smtp_server=smtp.gmail.com
smtp_port=587
auth_username=name@gmail.com
auth_password=pass
force_sender=name@gmail.com
hostname=gmail.com

11.01.10 21:33:23 : Error connecting with SSL.

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *