URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 67905
[ Назад ]

Исходное сообщение
"Послать письмо через mail() (php) через определённый сервер"

Отправлено Georgiy , 28-Июл-06 16:45 
Здраствуйте.
Подскажите пожалуйста как сделать чтобы функция mail() php отправляла почту через определённый smtp сервер. Класс отдельный на php для этого использовать не хочется.

P.S. ОС: FreeBSD


Содержание

Сообщения в этом обсуждении
"Послать письмо через mail() (php) через определённый сервер"
Отправлено lavr , 28-Июл-06 17:39 
>Здраствуйте.
>Подскажите пожалуйста как сделать чтобы функция mail() php отправляла почту через определённый
>smtp сервер. Класс отдельный на php для этого использовать не хочется.
>
>
>P.S. ОС: FreeBSD


http://ru.php.net/manual/en/ref.mail.php - уже не в состоянии прочесть и разобрать
примеры чтобы сваять под себя?


"Послать письмо через mail() (php) через определённый сервер"
Отправлено Georgiy , 28-Июл-06 17:48 
>>Здраствуйте.
>>Подскажите пожалуйста как сделать чтобы функция mail() php отправляла почту через определённый
>>smtp сервер. Класс отдельный на php для этого использовать не хочется.
>>
>>
>>P.S. ОС: FreeBSD
>
>
>http://ru.php.net/manual/en/ref.mail.php - уже не в состоянии прочесть и разобрать
>примеры чтобы сваять под себя?


и что там нужного мне? там примеры в основном либо через функцию mail либо через дополнительные классы.
параметры
SMTP
smtp_port
под Windows
под юникс надо sendmail_path юзать, но в man sendmail нету способа указания smtp сервера.


"Послать письмо через mail() (php) через определённый сервер"
Отправлено lavr , 28-Июл-06 18:06 
>>>Здраствуйте.
>>>Подскажите пожалуйста как сделать чтобы функция mail() php отправляла почту через определённый
>>>smtp сервер. Класс отдельный на php для этого использовать не хочется.
>>>
>>>
>>>P.S. ОС: FreeBSD
>>
>>
>>http://ru.php.net/manual/en/ref.mail.php - уже не в состоянии прочесть и разобрать
>>примеры чтобы сваять под себя?
>
>
>и что там нужного мне? там примеры в основном либо через функцию
>mail либо через дополнительные классы.
>параметры
>SMTP
>smtp_port
>под Windows
>под юникс надо sendmail_path юзать, но в man sendmail нету способа указания
>smtp сервера.

mail как функция всегда использовалась для сброса данных на MTA, соответственно
никаких smtphost и smtpport не требуется, ибо это занятие MTA (Mail Transfer Agent)
в простонародии smtp-почтовик (sendmail, postfix, exim . etc)

Соответственно, либо вы настраиваете MTA и забываете про smtp_server, либо
сами формируете письмо по RFC c mime и реализуете smtp-connect, либо берете
готовые классы, функции и при необходимости подпиливаете под свою задачу
Если нет желания лопатить кучу RFC по MAIL,SMTP,MIME - возьмите готовые, ссылки
есть как в предыдущем URL в примерах, так и
http://ru.php.net/manual/en/function.mail.php


"Послать письмо через mail() (php) через определённый сервер"
Отправлено Georgiy , 28-Июл-06 18:34 
>>>>Здраствуйте.
>>>>Подскажите пожалуйста как сделать чтобы функция mail() php отправляла почту через определённый
>>>>smtp сервер. Класс отдельный на php для этого использовать не хочется.
>>>>
>>>>
>>>>P.S. ОС: FreeBSD
>>>
>>>
>>>http://ru.php.net/manual/en/ref.mail.php - уже не в состоянии прочесть и разобрать
>>>примеры чтобы сваять под себя?
>>
>>
>>и что там нужного мне? там примеры в основном либо через функцию
>>mail либо через дополнительные классы.
>>параметры
>>SMTP
>>smtp_port
>>под Windows
>>под юникс надо sendmail_path юзать, но в man sendmail нету способа указания
>>smtp сервера.
>
>mail как функция всегда использовалась для сброса данных на MTA, соответственно
>никаких smtphost и smtpport не требуется, ибо это занятие MTA (Mail Transfer
>Agent)
>в простонародии smtp-почтовик (sendmail, postfix, exim . etc)
>
>Соответственно, либо вы настраиваете MTA и забываете про smtp_server, либо
>сами формируете письмо по RFC c mime и реализуете smtp-connect, либо берете
>
>готовые классы, функции и при необходимости подпиливаете под свою задачу
> Если нет желания лопатить кучу RFC по MAIL,SMTP,MIME - возьмите готовые,
>ссылки
>есть как в предыдущем URL в примерах, так и
>http://ru.php.net/manual/en/function.mail.php

понял спасибо, средствами php не обойтись, mta буду копать - мне просто надо именно, чтобы заработала функция mail()
P.S. в mta postfix не подскажете как задать smtp сервер?


"Послать письмо через mail() (php) через определённый сервер"
Отправлено lavr , 28-Июл-06 19:00 
>>>>>Здраствуйте.
>>>>>Подскажите пожалуйста как сделать чтобы функция mail() php отправляла почту через определённый
>>>>>smtp сервер. Класс отдельный на php для этого использовать не хочется.
>>>>>
>>>>>
>>>>>P.S. ОС: FreeBSD
>>>>
>>>>
>>>>http://ru.php.net/manual/en/ref.mail.php - уже не в состоянии прочесть и разобрать
>>>>примеры чтобы сваять под себя?
>>>
>>>
>>>и что там нужного мне? там примеры в основном либо через функцию
>>>mail либо через дополнительные классы.
>>>параметры
>>>SMTP
>>>smtp_port
>>>под Windows
>>>под юникс надо sendmail_path юзать, но в man sendmail нету способа указания
>>>smtp сервера.
>>
>>mail как функция всегда использовалась для сброса данных на MTA, соответственно
>>никаких smtphost и smtpport не требуется, ибо это занятие MTA (Mail Transfer
>>Agent)
>>в простонародии smtp-почтовик (sendmail, postfix, exim . etc)
>>
>>Соответственно, либо вы настраиваете MTA и забываете про smtp_server, либо
>>сами формируете письмо по RFC c mime и реализуете smtp-connect, либо берете
>>
>>готовые классы, функции и при необходимости подпиливаете под свою задачу
>> Если нет желания лопатить кучу RFC по MAIL,SMTP,MIME - возьмите готовые,
>>ссылки
>>есть как в предыдущем URL в примерах, так и
>>http://ru.php.net/manual/en/function.mail.php
>
>понял спасибо, средствами php не обойтись, mta буду копать - мне просто
>надо именно, чтобы заработала функция mail()
>P.S. в mta postfix не подскажете как задать smtp сервер?

никак, потому как если на локальной машине поднят MTA, он либо через SMART хост
ВСЮ почту бросает на него, либо сам все разруливает - делает к DNS запрос на
получение MX записи и берет оттуда почтовый релей для адреса-получателя и сам
соединяется с этим почтовым релем и отдает ему почтовое письмо которое получил
от функции mail().

Итого это выглядит так:

- машина на которой вы создаете свой продукт, например apache+php должна иметь
поднятый и настроенный MTA, в этом случае вы используете mail() НИ О ЧЕМ НЕ
ЗАБОТЯСЬ, за исключением настроек в php.ini. Реализация mail() для WIN32 тоже
исключение
- если на указанной машине НЕТ MTA или он не работает, не настроен - в этом случае
функция mail() бессмысленна и вы реализуете самостоятельно полноценное письмо
с полноценными headers по RFC, затем smtp соединение к заданному smtp-серверу,
проверки тоже за вами, ни один внешний (чужой) MTA не даст абы кому посылать
через себя почту, иначе это будет OPEN-RELAY через который спам польется жутким
потоком

Вот и все, просто и прозрачно.