Код: Выделить всё
#! /usr/local/bin/php
<?php
$to = 'bobot@mydomen';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: admin@mydomen';
mail($to, $subject, $message, $headers);
?>
Код: Выделить всё
#! /usr/local/bin/php
<?php
$to = 'bobot@mydomen';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: admin@mydomen';
mail($to, $subject, $message, $headers);
?>
вы издеваетесь?bobot писал(а):как мне сделать привязку к папке?? у меня юзера находятся в одной папке как сделать привязку к этой папке??(мне просто разослать надо им письмо!!??
да все мы так начинали -))ADRE писал(а):
почтовую отпарвку через пхп хочет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!")
стока кода и ни одной проверки на валидность smtp команд...Dimon писал(а):fwrite($this->_fh, "EHLO ".$this->server."\n");
назови хоть одну причинуDimon писал(а):Но согласись это лучше чем mail()
ну да, яблоко плохое, потому что это яблокоDimon писал(а):zg причина только одна "localhost MTA". Я думаю достаточно.
а что, это интимная тема? я обчно беру тектовый редактор и правлюDimon писал(а):И не надо рассказывать про редактирование php.ini
Вкратце на русском: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.
А твой клиент поддерживает HELO as a fallback? А должен.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.
Достаточно?
Ну такDimon писал(а):Человеку помочь пытаешься, а тут критики налетели..
Сами выложите что нибудь универсальное..
zg писал(а):Функцией mail надо пользоваться хотя бы потому, что она предоставляет унифицированный интерфейс отправки писем. То есть тебе неважно как именно будет отправлено письмо, важно, что ты передал сообщение через универсальный интерфейс.
На хостинге, mail() отключено там, где самый сраный и дешовый тарифоный план (у всех причем), если там вообще есть php.В связи с этим невозможно использовать функцию mail(),