Страница 1 из 1
всё сделал скрипт на Php сразу другая проблема как сделать
Добавлено: 2008-10-15 11:41:57
bobot
вот скрипт
Код: Выделить всё
#! /usr/local/bin/php
<?php
$to = 'bobot@mydomen';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: admin@mydomen';
mail($to, $subject, $message, $headers);
?>
как мне сделать привязку к папке?? у меня юзера находятся в одной папке как сделать привязку к этой папке??(мне просто разослать надо им письмо!!??
Re: всё сделал скрипт на Php сразу другая проблема как сделать
Добавлено: 2008-10-15 13:04:54
MAK
bobot писал(а):как мне сделать привязку к папке?? у меня юзера находятся в одной папке как сделать привязку к этой папке??(мне просто разослать надо им письмо!!??
вы издеваетесь?
Re: всё сделал скрипт на Php сразу другая проблема как сделать
Добавлено: 2008-10-30 11:51:14
ADRE
Re: всё сделал скрипт на Php сразу другая проблема как сделать
Добавлено: 2008-10-30 16:27:46
zg
ADRE писал(а):
да все мы так начинали -))
Re: всё сделал скрипт на Php сразу другая проблема как сделать
Добавлено: 2008-10-31 6:27:18
ADRE
угу

извините конечно что так, но когда одно и тоже по 20 раз в день то ->

Re: всё сделал скрипт на Php сразу другая проблема как сделать
Добавлено: 2008-11-13 2:18:21
Dimon
Непонятно что ты хочешь... Объясни подробнее
Re: всё сделал скрипт на Php сразу другая проблема как сделать
Добавлено: 2008-11-13 9:19:44
ADRE
Dimon писал(а):Непонятно что ты хочешь... Объясни подробнее
почтовую отпарвку через пхп хочет
Re: всё сделал скрипт на Php сразу другая проблема как сделать
Добавлено: 2008-11-21 23:16:12
Dimon
Код: Выделить всё
class smtp{
private $server;
private $login;
private $password;
private $filename;
private $_smtp_conn;
private $_fh;
public function __construct($server, $login, $password, $logfilename){
$this->server = $server;
$this->login = $login;
$this->password = $password;
$this->filename = $logfilename;
if (!$this->_fh = fopen($_SERVER['DOCUMENT_ROOT'].$this->filename, "a")) {
exit("Невозможно открыть лог файл для записи");
}
$this->_smtp_conn = fsockopen($this->server, 25, $errno, $errstr, 10);
if(!$this->_smtp_conn){
fwrite($this->_fh, "Ошибка при открытии сокета \(".$errno." - ".$errstr."\r\n");
}
$data = $this->get_data($this->_smtp_conn)."\n";
fwrite($this->_smtp_conn,"EHLO ".$this->server."\r\n");
fwrite($this->_fh, "EHLO ".$this->server."\n");
$data .= $this->get_data($this->_smtp_conn)."\n";
fwrite($this->_smtp_conn,"AUTH LOGIN\r\n");
fwrite($this->_fh, "AUTH LOGIN\n");
$data .= $this->get_data($this->_smtp_conn)."\n";
fwrite($this->_smtp_conn,base64_encode($this->login)."\r\n");
fwrite($this->_fh, base64_encode($this->login)."\n");
$data .= $this->get_data($this->_smtp_conn)."\n";
fwrite($this->_smtp_conn,base64_encode($this->password)."\r\n");
fwrite($this->_fh, base64_encode($this->password)."\n");
$data .= $this->get_data($this->_smtp_conn)."\n";
fwrite($this->_fh, $data."\n");
}
public function __destruct() {
fwrite($this->_smtp_conn,"QUIT\r\n");
$data = $this->get_data($this->_smtp_conn);
fclose($this->_smtp_conn);
fwrite($this->_fh, $data."\n");
fclose($this->_fh);
}
private function get_data()
{
$data = "";
while($str = fgets($this->_smtp_conn, 515))
{
$data .= $str;
if(substr($str,3,1) == " ") { break; }
}
return $data;
}
public function mail_from($from_name, $from_mail, $rcpt_name, $rcpt_mail, $subject, $data){
$domain = strstr($from_mail, '@');
$header="Date: ".date("D, j M Y G:i:s")." +0700\r\n";
$header.="From: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode($from_name)))."?= <".$from_mail.">\r\n";
$header.="X-Mailer: The Bat! (v1000) Professional\r\n";
$header.="Reply-To: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode($from_name)))."?= <".$from_mail.">\r\n";
$header.="X-Priority: 3 (Normal)\r\n";
$header.="Message-ID: <172562218.".date("YmjHis").$domain.">\r\n";
$header.="To: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode($rcpt_name)))."?= <".$rcpt_mail.">\r\n";
$header.="Subject: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode($subject)))."?=\r\n";
$header.="MIME-Version: 1.0\r\n";
$header.="Content-Type: text/html; charset=windows-1251\r\n";
$header.="Content-Transfer-Encoding: 8bit\r\n";
fwrite($this->_smtp_conn,"MAIL FROM: <".$from_mail.">\r\n");
fwrite($this->_fh, "MAIL FROM: <".$from_mail.">\r\n");
$data= $this->get_data($this->_smtp_conn);
fwrite($this->_smtp_conn,"RCPT TO: <".$rcpt_mail.">\r\n");
fwrite($this->_fh, "RCPT TO: <".$rcpt_mail.">\r\n");
$data.= $this->get_data($this->_smtp_conn);
fwrite($this->_smtp_conn,"DATA\r\n");
$data.= $this->get_data($this->_smtp_conn);
fwrite($this->_smtp_conn,$header."\r\n".$data."\r\n.\r\n");
$data.= $this->get_data($this->_smtp_conn);
fwrite($this->_fh, $data."\n");
}
}
$smtp = new smtp(SMTP_SERVER, LOGIN, PASSWORD, SMTP_CLIENT_LOG);
$smtp->mail_from("Дмитрий", "dimon@dimon.dimon", "Дмитрий", "dimon@dimon.dimon", "Тестирование скриптов", "Все OK!")
Re: всё сделал скрипт на Php сразу другая проблема как сделать
Добавлено: 2008-11-21 23:22:04
zg
Dimon писал(а):fwrite($this->_fh, "EHLO ".$this->server."\n");
стока кода и ни одной проверки на валидность smtp команд...
Re: всё сделал скрипт на Php сразу другая проблема как сделать
Добавлено: 2008-11-22 0:05:49
Dimon
Допиши сам.. Если на то пошло тут много чего нет.. Но согласись это лучше чем mail()
Re: всё сделал скрипт на Php сразу другая проблема как сделать
Добавлено: 2008-11-22 8:37:46
zg
Dimon писал(а):Но согласись это лучше чем mail()
назови хоть одну причину
Re: всё сделал скрипт на Php сразу другая проблема как сделать
Добавлено: 2008-11-23 23:38:28
Dimon
zg причина только одна "localhost MTA". Я думаю достаточно. И не надо рассказывать про редактирование php.ini
Re: всё сделал скрипт на Php сразу другая проблема как сделать
Добавлено: 2008-11-24 7:25:02
zg
Dimon писал(а):zg причина только одна "localhost MTA". Я думаю достаточно.
ну да, яблоко плохое, потому что это яблоко
В книге по подготовке к PHP ZCE4 целый раздел был посвящён работе с почтой и рассказывалось, что и зачем было сделано и почему это нужно. К сожалению ни на экзамен, ни в ркуводоство по ZCE PHP5 эти вопросы так не попали.
Функцией mail надо пользоваться хотя бы потому, что она предоставляет унифицированный интерфейс отправки писем. То есть тебе неважно как именно будет отправлено письмо, важно, что ты передал сообщение через универсальный интерфейс. Ты даже не будешь знать кто и как отправит письмо, важно, что ты положил его в очередь на отправку.
Затачиваясь только под SMTP ты собственоручно ограничиваешь себя. Или ты думаешь, что все сервера прям таки работают по SMTP? Нет. Ну даже пускай SMTP, объясни почему первым делом ты шлёшь "EHLO", а не "HELO"?
Dimon писал(а):И не надо рассказывать про редактирование php.ini
а что, это интимная тема? я обчно беру тектовый редактор и правлю

Re: всё сделал скрипт на Php сразу другая проблема как сделать
Добавлено: 2008-11-24 12:40:13
Dimon
RFC 2821 пункт 2.2
In an effort that started in 1990, approximately a decade after RFC
821 was completed, the protocol was modified with a "service
extensions" model that permits the client and server to agree to
utilize shared functionality beyond the original SMTP requirements.
The SMTP extension mechanism defines a means whereby an extended SMTP
client and server may recognize each other, and the server can inform
the client as to the service extensions that it supports.
Contemporary SMTP implementations MUST support the basic extension
mechanisms. For instance, servers MUST support the EHLO command even
if they do not implement any specific extensions and clients SHOULD
preferentially utilize EHLO rather than HELO. (However, for
compatibility with older conforming implementations, SMTP clients and
servers MUST support the original HELO mechanisms as a fallback.)
Unless the different characteristics of HELO must be identified for
interoperability purposes, this document discusses only EHLO.
SMTP is widely deployed and high-quality implementations have proven
to be very robust. However, the Internet community now considers
some services to be important that were not anticipated when the
protocol was first designed. If support for those services is to be
added, it must be done in a way that permits older implementations to
continue working acceptably. The extension framework consists of:
- The SMTP command EHLO, superseding the earlier HELO,
- a registry of SMTP service extensions,
- additional parameters to the SMTP MAIL and RCPT commands, and
- optional replacements for commands defined in this protocol, such
as for DATA in non-ASCII transmissions [33].
SMTP's strength comes primarily from its simplicity. Experience with
many protocols has shown that protocols with few options tend towards
ubiquity, whereas protocols with many options tend towards obscurity.
Each and every extension, regardless of its benefits, must be
carefully scrutinized with respect to its implementation, deployment,
and interoperability costs. In many cases, the cost of extending the
SMTP service will likely outweigh the benefit.
Вкратце на русском:
Современные реализации SMTP должны поддерживать базовые механизмы расширения. Например, сервер должен
поддерживать команды EHLO, даже если в нем не реализовано соответствующее расширение, а клиентам
рекомендуется использовать команду
EHLO вместо HELO
4. В тех случаях, когда для интероперабельности не требуется явное использование HELO, настоящая спецификация всегда рассматривает только EHLO.
Достаточно?
Re: всё сделал скрипт на Php сразу другая проблема как сделать
Добавлено: 2008-11-24 13:57:14
Dirty.Eager
Dimon писал(а):RFC 2821 пункт 2.2
(However, for
compatibility with older conforming implementations, SMTP clients and
servers MUST support the original HELO mechanisms as a fallback.)
Вкратце на русском:
Современные реализации SMTP должны поддерживать базовые механизмы расширения. Например, сервер должен
поддерживать команды EHLO, даже если в нем не реализовано соответствующее расширение, а клиентам
рекомендуется использовать команду
EHLO вместо HELO
4. В тех случаях, когда для интероперабельности не требуется явное использование HELO, настоящая спецификация всегда рассматривает только EHLO.
Достаточно?
А твой клиент поддерживает HELO as a fallback? А должен.
Re: всё сделал скрипт на Php сразу другая проблема как сделать
Добавлено: 2008-11-24 14:59:20
Dimon
Dirty.Eager
Напоминаю, клиент был написан за 20 минут, в нем нет даже простой проверки ответа сервера..)
Нет md5 авторизации, mime и много других рюшечек.
Это скрипт не претендует на универcальность и т.д.
Как zg меня спросил так я ему и ответил.
Re: всё сделал скрипт на Php сразу другая проблема как сделать
Добавлено: 2008-11-24 15:01:04
Dimon
Человеку помочь пытаешься, а тут критики налетели..
Сами выложите что нибудь универсальное..
Re: всё сделал скрипт на Php сразу другая проблема как сделать
Добавлено: 2008-11-24 15:03:35
Dirty.Eager
Dimon писал(а):Человеку помочь пытаешься, а тут критики налетели..
Сами выложите что нибудь универсальное..
Ну так
zg писал(а):Функцией mail надо пользоваться хотя бы потому, что она предоставляет унифицированный интерфейс отправки писем. То есть тебе неважно как именно будет отправлено письмо, важно, что ты передал сообщение через универсальный интерфейс.
Re: всё сделал скрипт на Php сразу другая проблема как сделать
Добавлено: 2008-11-24 15:11:06
Dimon
Dirty.Eager
Напоминаю еще раз, не всегда на хостингах правильно настроен php.ini и MTA.
В связи с этим невозможно использовать функцию mail(), или я что то незнаю?
если как то можно обойти редактирование php.ini то я был рад.
Re: всё сделал скрипт на Php сразу другая проблема как сделать
Добавлено: 2008-11-24 15:14:03
zingel
В связи с этим невозможно использовать функцию mail(),
На хостинге, mail() отключено там, где самый сраный и дешовый тарифоный план (у всех причем), если там вообще есть php.
Re: всё сделал скрипт на Php сразу другая проблема как сделать
Добавлено: 2008-11-24 16:49:45
Dimon
Ну и я про что, а так лучше конечно mail() чем извращаться
