аукцион / FPR / donate / услуги / RSS / распечатать / вход 
Мой мир
Вконтакте
Одноклассники

PHP на IIS отправка электронной почты msmtp

[6 апреля 2015 | 7 апреля 2015 | 14 апреля 2015]

Столкнулся с необходимостью отправки электронной почты из 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


Этот сайт использует файлы cookies, чтобы упростить вашу навигацию по сайту, предлагать только интересную информацию и упростить заполнение форм. Я предполагаю, что, если вы продолжаете использовать мой сайт, то вы согласны с использованием мной файлов cookies. Вы в любое время можете удалить и/или запретить их использование изменив настройки своего интернет-браузера.

Сообщайте мне о замеченных ошибках на: web@orcinus.ru. Все пожелания и советы будут учтены при дальнейшем проектировании сайта. Я готов сотрудничать со всеми желающими. В некоторых случаях, мнение автора может не совпадать с мнением автора! Phone: +7-902-924-70-49.

Top.Mail.Ru
Top.Mail.Ru LiveInternet Rambler's Top100 Яндекс.Метрика