PHP на IIS отправка электронной почты msmtp
Столкнулся с необходимостью отправки электронной почты из PHP скриптов исполняющихся под Windows IIS. В принципе не такая сложная задача, но она омрачалась тем, что отправка должна осуществляться от имени почтового ящика расположенного на сервере Yandex. Но тут начинаются основные грабли. Не буду описывать, то почему так сложилось, но задача стояла именно так. Следовало отправлять почту используя SMTP сервер Яндекса.
Поискав по сети нашел массу интересной инфы, но применяя на практике программы почему-то не хотели корректно отправлять почту. Их постоянно отшивал сервер Яндекса со следующей мотивировкой:
15.03.02 12:32:07 : Working without SSL/TLS encryption is not allowed. Please visit http://help.yandex.ru/mail/mail-clients/ssl.xml sc=BWCTvUcYASw9
Конечно, по ссылке всё было именно так как я настраивал в программе sendmail.exe. Постепенно обыскивая интернет, я нашел, что для отправки почты Битрикс использует консольный клиент под названием MSMTP. Скачал, попробовал его в работе с почтой Яндекса и пришел к выводу, что это именно то, что мне необходимо.
И так, пара тонкостей которые необходимо учесть. Они были обнаружены не сразу, но это съэкономит вам время на поиски проблемы.
Во-первых, конфигурационный файл для этой программы должен называться msmtprc.txt. Во-вторых, он должен располагаться не рядом с программой, а в каталоге C:ProgramData.
В-третьих, не надо долго настраивать все параметры конфигурационного файла и искать сертификаты ключей, достаточно всего нескольких строчек, что бы заработала почта от Яндекс:
account default logfile C:sendmailmsmtp.log host smtp.yandex.ru port 587 from mail@orcinus.ru keepbcc on auth on user mail@orcinus.ru password PassWordDlaPochty123 tls on tls_starttls on tls_certcheck off
Естественно, что имя учётной записи и пароль от учётки необходимо вписать свои. Порт изменять не стоит, там действительно указывается 587.
И так, распаковываем программу на диск, в каталог c:sendmail Создаём конфигурационный файл для программы. За тем нужно отредактировать конфигурационный файл интерпретатора PHP. Он расположен в каталоге в который вы установили PHP.
Отредактируйте секцию mail function следующим образом:
[mail function] ; For Win32 only. ; http://php.net/smtp ;SMTP = localhost ; http://php.net/smtp-port ;smtp_port = 25 ; For Win32 only. ; http://php.net/sendmail-from sendmail_from = mail@orcinus.ru ; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). ; http://php.net/sendmail-path sendmail_path = "c:sendmailmsmtp.exe -t"
Теоретически, после перезапуска интерпретатора, ваша функция отправки почты станет работать. Кстати, н езабывайте о том, что адрес отправителя необходимо указывать свой, соответствующий учетной записи на сервере Яндекс. Если указать другой адрес, то почтовый сервер заблокирует письмо и не отправит его.
Программу можно скачать с сайта MSMTP.
Тэги: ИТ, программирование
Отредактировано:2020-09-10 19:56:20
Я когда то делал PHP скрипт который сам отсылал без посредника.