Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Отправить email из php скрипта.

11K
04 сентября 2007 года
Tanger
53 / / 22.08.2007
Мне нужно написать скрипт, который отправляет письмо с подтверждением емэйла. Но я не знаю как отправить письмо. Можете помочь?
18K
04 сентября 2007 года
gnumus
52 / / 28.07.2007
 
Код:
mail()

тебе рыть в сторону четвёртого параметра
239
05 сентября 2007 года
Dolonet
1.7K / / 20.05.2000
Лови продукт в том числе моего разума. Полноценный объект отправки почты с дебагом. Отправляет очень полноценно.
Код:
<?php
/**
* @package Dolotov
* @subpackage Email
* @copyright Лиецнзия (C) 2007 Алексей Долотов и всё.
* @license Все права принадлежат Алексею Долотову, reg (пёсик) dolotov.com.
* @author Alexey Dolotov <post (пёсик) dolotov.com>
* @description Модуль отправки e-mail сообщений
*/


// Настройки существующего почтового ящика, с которого будут отправляться письма.
// Желательно, чтобы ящик находился на этом же сервере для повышения скорости работы.
// Раскомментирование закомментированных переменных ничего не даст. Сейчас они жестко заданы в классе mailSend
$nmSmtpFrom         = 'manager@a25.ru'; // Адрес отправителя
$nmSmtpFromName     = 'Служба уведомлений'; // Имя отправителя
$nmSmtpServer       = 'mail.a25.ru'; // Адрес SMTP сервера (mail.example.com) или же IP адрес непосредственно
//$nmSmtpPort           = '25'; // По умолчанию 25
//$nmSmtpTimeout        = '30'; // Время ожидания реакции от сервера. Если недостаточно, попробуйте 45
$nmSmtpUsername     = 'manager@a25.ru'; // логин для SMTP-авторизации
$nmSmtpPassword     = 'qazws'; // Пароль для smtp
//$nmSmtpLocalhost  = "127.0.0.1"; // Кто я такой. Вроде бы, всегда работает с 127.0.0.1
//$nmNewLine            = "\r\n"; // Определение символа новой строки
//$nmSmtpSecure     = 0; // 1 если требуется именно безопасное соединение. Обычно - 0

/**
* Класс отправки сообщений через SMTP.
* @subpackage Email
* @package Dolotov
*/

class mailSend {
   
    // Ассоциативный массив результатов выполнения последней отправки сообщения
    private $_log = array();
    // Текущий статус объекта
    // 0 - объект не создан еще
    // 1 - создан, готов к работе
    // 2 - отправляет сообщение
    private $_status = 0;
    // Код ошибки, если таковая была. Иначе 0
    private $_errNum = 0;
    // Текст ошибки, если таковая была.
    private $_errText = '';
   
    // Порт, через который происходит соединение с SMTP сервером
    public $_port = 25;
    // Время ожидания реакции от сервера. Если недостаточно, попробуйте 45
    public $_timeout = 30;
    // Определение символа новой строки
    public $_line = "\r\n";
    // 1 если требуется именно безопасное соединение. Обычно - 0
    public $_secure = 0;
    // прото я, т.е. localhost
    public $_localhost = '127.0.0.1';
   
    // Тут все очевидно. Если что, см. configuration.php
    private $_from = null;
    private $_fromName = null;
    private $_server = null;
    private $_username = null;
    private $_password = null;
   
    // Конструктор класса. Инициализация переменных.
    function __construct( $from, $fromName, $server, $username, $password ) {
        $this->_from = trim($from);
        $this->_fromName = trim($fromName);
        $this->_server = $server;
        $this->_username = $username;
        $this->_password = $password;
        $this->_status = 1; // Означает, что объект создан, готов к работе.
    }
   
    // Метод подготавливает письмо к отправке и отправляет его.
    // Возвращает true, если отправка прошла успешно
    public function send( $to, $toName, $subject, $message, $headers='', $isHtml=0 ) {
        $this->_errNum  = 0;
        $this->_errText = '';
        $this->_status  = 2; // Устанавливаем метку, что объект начал отправлять сообщение.
        $this->_log = array(); // Обнуляем лог
       
        // Установка соединения с SMTP сервером
        $smtpConnect = fsockopen($this->_server, $this->_port, $errno, $errstr, $this->_timeout);
        $smtpResponse = fgets($smtpConnect, 4096);
        // Проверка, установлено ли SMTP физическое соединение? Нет?
        if (empty($smtpConnect)) { // Завершаем работу метода и вписываем ошибку
            $this->_errNum  = $errno;
            $this->_errText = "Failed to connect: $smtpResponse";
            return false;
        } else {
            // Соединено с: $smtpResponse
            $this->_log['connection'] = $smtpResponse;
        }
       
        // Говорим HELO
        fputs($smtpConnect, "HELO {$this->_localhost}". $this->_line);
        $smtpResponse = fgets($smtpConnect, 4096);
        $this->_log['helo'] = $smtpResponse; // Записываем ответ на наше HELO
       
        // Если требуется, открываем TLS соединение, то открываем его
        if ($this->_secure) {
            fputs($smtpConnect, "STARTTLS". $this->_line);
            $smtpResponse = fgets($smtpConnect, 4096);
            $this->_log['tls'] = "$smtpResponse";
           
            // После старта TLS надо сказать еще раз HELO
            fputs($smtpConnect, "HELO {$this->_localhost}". $this->_line);
            $smtpResponse = fgets($smtpConnect, 4096);
            $this->_log['helo2'] = "$smtpResponse";
        }

        // Запрос на авторизованный логин
        fputs($smtpConnect,"AUTH LOGIN" . $this->_line);
        $smtpResponse = fgets($smtpConnect, 4096);
        $this->_log['authrequest'] = $smtpResponse;
       
        // Отправка имени пользователя
        fputs($smtpConnect, base64_encode($this->_username) . $this->_line);
        $smtpResponse = fgets($smtpConnect, 4096);
        $this->_log['authusername'] = $smtpResponse;
       
        // Отправка пароля
        fputs($smtpConnect, base64_encode($this->_password) . $this->_line);
        $smtpResponse = fgets($smtpConnect, 4096);
        $this->_log['authpassword'] = "$smtpResponse";

        // email от кого
        fputs($smtpConnect, "MAIL FROM: $this->_from" . $this->_line);
        $smtpResponse = fgets($smtpConnect, 4096);
        $this->_log['mailfrom'] = "$smtpResponse";
       
        // email кому
        fputs($smtpConnect, "RCPT TO: $to" . $this->_line);
        $smtpResponse = fgets($smtpConnect, 4096);
        $this->_log['mailto'] = "$smtpResponse";
       
        // email сам. Готовимся к посылке данных
        fputs($smtpConnect, "DATA" . $this->_line);
        $smtpResponse = fgets($smtpConnect, 4096);
        $this->_log['data1'] = "$smtpResponse";
       
        //Составляем заголовки
        $headers = "MIME-Version: 1.0" . $this->_line;
        $headers .= "Content-type: text/".($isHtml ? "html" : "plain")."; charset=Windows-1251" . $this->_line;
        $headers .= "To: $toName <$to>" . $this->_line;
        $headers .= "From: {$this->_fromName} <{$this->_from}>" . $this->_line;
       
        // Отправляем заголовок и само сообщение.
        // Точка в самом конце означает конец сообщения.
        fputs($smtpConnect, "Subject: $subject\r\n$headers\r\n\r\n$message\r\n.\r\n");
        $smtpResponse = fgets($smtpConnect, 4096);
        $this->_log['data2response'] = $smtpResponse;
       
        // Завершаем передачу данных
        fputs($smtpConnect,"QUIT" . $this->_line);
        $smtpResponse = fgets($smtpConnect, 4096);
        $this->_log['quit'] = $smtpResponse;
        $this->_log['quitcode'] = substr($smtpResponse,0,3);
        fclose($smtpConnect); // Закрываем SMTP соединение
       
        $this->_status = 1; // Объект снова готов к работе. Освободился от работы.
        return $this->_log['quitcode'];
    }
   
    // Метод пытается вернуть значение определенного параметра лога отправки сообщения
    // или всего массива лога.
    public function getLog( $param='' ) {
        if (strlen($param)) {
            if (isset($this->_log[$param])) {
                return $this->_log[$param];
            } else {
                return false;
            }
        } else { // Надо вернуть весь массив?
            return $this->_log;
        }
    }
   
    // Метод возвращает текущий статус работы объекта.
    // Может понадобиться при многопоточности, а пока что пусть будет.
    public function getStatus() {
        return $this->_status;
    }
}

?>
7.8K
05 сентября 2007 года
Tingo
201 / / 17.05.2007
мне кажется что ему вовсе не емейл отправлять, а подтверждать регистрацию нужно.
32K
05 сентября 2007 года
Coteyko
1 / / 05.09.2007
а, может, где-то так?

Код:
$mess = "";
  $myemail = "my@email.com";
  $headers = "";
  $subj = "тут тема";
  $mess .= "тут сообщение";
  $mess = wordwrap($mess, 70);
  $headers = "From: ".$myemail."\r\n";
  $headers .= "Reply-To: ".$myemail."\r\n";
  $headers .= "Return-path: ".$myemail."\r\n";
  $headers .= "Content-Type: text/plain; charset=windows-1251\r\n";
  mail($myemail, $subj, $mess, $headers);
239
05 сентября 2007 года
Dolonet
1.7K / / 20.05.2000
"Но я не знаю как отправить письмо" - это его слова
11K
08 сентября 2007 года
Tanger
53 / / 22.08.2007
Да, мне нужно было подтвердить регестрацию. Но я шашел то, что меня устраивает на сайте http://www.php-mail.ru

Coteyko, спасибо. Почти это-же я и использовал, но были проблеммы со шрифтами - теперь нет!

Я только не понял что этот скрипт делает?
Это что ли типа почтового клиента?

[QUOTE=Dolonet]
Лови продукт в том числе моего разума. Полноценный объект отправки почты с дебагом. Отправляет очень полноценно.
PHP код:
Код:
<?php
/**
* @package Dolotov
* @subpackage Email
* @copyright Лиецнзия (C) 2007 Алексей Долотов и всё.
* @license Все права принадлежат Алексею Долотову, reg (пёсик) dolotov.com.
* @author Alexey Dolotov <post (пёсик) dolotov.com>
* @description Модуль отправки e-mail сообщений
*/

// Настройки существующего почтового ящика, с которого будут отправляться письма.
// Желательно, чтобы ящик находился на этом же сервере для повышения скорости работы.
// Раскомментирование закомментированных переменных ничего не даст. Сейчас они жестко заданы в классе mailSend
$nmSmtpFrom            = 'manager@a25.ru'; // Адрес отправителя
$nmSmtpFromName        = 'Служба уведомлений'; // Имя отправителя
$nmSmtpServer        = 'mail.a25.ru'; // Адрес SMTP сервера (mail.example.com) или же IP адрес непосредственно
//$nmSmtpPort            = '25'; // По умолчанию 25
//$nmSmtpTimeout        = '30'; // Время ожидания реакции от сервера. Если недостаточно, попробуйте 45
$nmSmtpUsername        = 'manager@a25.ru'; // логин для SMTP-авторизации
$nmSmtpPassword        = 'qazws'; // Пароль для smtp
//$nmSmtpLocalhost    = "127.0.0.1"; // Кто я такой. Вроде бы, всегда работает с 127.0.0.1
//$nmNewLine            = "\r\n"; // Определение символа новой строки
//$nmSmtpSecure        = 0; // 1 если требуется именно безопасное соединение. Обычно - 0

/**
* Класс отправки сообщений через SMTP.
* @subpackage Email
* @package Dolotov
*/
class mailSend {
   
    // Ассоциативный массив результатов выполнения последней отправки сообщения
    private $_log = array();
    // Текущий статус объекта
    // 0 - объект не создан еще
    // 1 - создан, готов к работе
    // 2 - отправляет сообщение
    private $_status = 0;
    // Код ошибки, если таковая была. Иначе 0
    private $_errNum = 0;
    // Текст ошибки, если таковая была.
    private $_errText = '';    
   
    // Порт, через который происходит соединение с SMTP сервером
    public $_port = 25;
    // Время ожидания реакции от сервера. Если недостаточно, попробуйте 45
    public $_timeout = 30;
    // Определение символа новой строки
    public $_line = "\r\n";
    // 1 если требуется именно безопасное соединение. Обычно - 0
    public $_secure = 0;
    // прото я, т.е. localhost
    public $_localhost = '127.0.0.1';
   
    // Тут все очевидно. Если что, см. configuration.php
    private $_from = null;
    private $_fromName = null;
    private $_server = null;
    private $_username = null;
    private $_password = null;
   
    // Конструктор класса. Инициализация переменных.
    function __construct( $from, $fromName, $server, $username, $password ) {
        $this->_from = trim($from);
        $this->_fromName = trim($fromName);
        $this->_server = $server;
        $this->_username = $username;
        $this->_password = $password;
        $this->_status = 1; // Означает, что объект создан, готов к работе.
    }
   
    // Метод подготавливает письмо к отправке и отправляет его.
    // Возвращает true, если отправка прошла успешно    
    public function send( $to, $toName, $subject, $message, $headers='', $isHtml=0 ) {
        $this->_errNum    = 0;
        $this->_errText    = '';
        $this->_status    = 2; // Устанавливаем метку, что объект начал отправлять сообщение.
        $this->_log = array(); // Обнуляем лог
       
        // Установка соединения с SMTP сервером
        $smtpConnect = fsockopen($this->_server, $this->_port, $errno, $errstr, $this->_timeout);
        $smtpResponse = fgets($smtpConnect, 4096);
        // Проверка, установлено ли SMTP физическое соединение? Нет?
        if (empty($smtpConnect)) { // Завершаем работу метода и вписываем ошибку
            $this->_errNum    = $errno;
            $this->_errText    = "Failed to connect: $smtpResponse";
            return false;
        } else {
            // Соединено с: $smtpResponse
            $this->_log['connection'] = $smtpResponse;
        }
       
        // Говорим HELO
        fputs($smtpConnect, "HELO {$this->_localhost}". $this->_line);
        $smtpResponse = fgets($smtpConnect, 4096);
        $this->_log['helo'] = $smtpResponse; // Записываем ответ на наше HELO
       
        // Если требуется, открываем TLS соединение, то открываем его
        if ($this->_secure) {
            fputs($smtpConnect, "STARTTLS". $this->_line);
            $smtpResponse = fgets($smtpConnect, 4096);
            $this->_log['tls'] = "$smtpResponse";
           
            // После старта TLS надо сказать еще раз HELO
            fputs($smtpConnect, "HELO {$this->_localhost}". $this->_line);
            $smtpResponse = fgets($smtpConnect, 4096);
            $this->_log['helo2'] = "$smtpResponse";
        }

        // Запрос на авторизованный логин
        fputs($smtpConnect,"AUTH LOGIN" . $this->_line);
        $smtpResponse = fgets($smtpConnect, 4096);
        $this->_log['authrequest'] = $smtpResponse;
       
        // Отправка имени пользователя
        fputs($smtpConnect, base64_encode($this->_username) . $this->_line);
        $smtpResponse = fgets($smtpConnect, 4096);
        $this->_log['authusername'] = $smtpResponse;
       
        // Отправка пароля
        fputs($smtpConnect, base64_encode($this->_password) . $this->_line);
        $smtpResponse = fgets($smtpConnect, 4096);
        $this->_log['authpassword'] = "$smtpResponse";

        // email от кого
        fputs($smtpConnect, "MAIL FROM: $this->_from" . $this->_line);
        $smtpResponse = fgets($smtpConnect, 4096);
        $this->_log['mailfrom'] = "$smtpResponse";
       
        // email кому
        fputs($smtpConnect, "RCPT TO: $to" . $this->_line);
        $smtpResponse = fgets($smtpConnect, 4096);
        $this->_log['mailto'] = "$smtpResponse";
       
        // email сам. Готовимся к посылке данных
        fputs($smtpConnect, "DATA" . $this->_line);
        $smtpResponse = fgets($smtpConnect, 4096);
        $this->_log['data1'] = "$smtpResponse";
       
        //Составляем заголовки
        $headers = "MIME-Version: 1.0" . $this->_line;
        $headers .= "Content-type: text/".($isHtml ? "html" : "plain")."; charset=Windows-1251" . $this->_line;
        $headers .= "To: $toName <$to>" . $this->_line;
        $headers .= "From: {$this->_fromName} <{$this->_from}>" . $this->_line;
       
        // Отправляем заголовок и само сообщение.
        // Точка в самом конце означает конец сообщения.
        fputs($smtpConnect, "Subject: $subject\r\n$headers\r\n\r\n$message\r\n.\r\n");
        $smtpResponse = fgets($smtpConnect, 4096);
        $this->_log['data2response'] = $smtpResponse;
       
        // Завершаем передачу данных
        fputs($smtpConnect,"QUIT" . $this->_line);
        $smtpResponse = fgets($smtpConnect, 4096);
        $this->_log['quit'] = $smtpResponse;
        $this->_log['quitcode'] = substr($smtpResponse,0,3);
        fclose($smtpConnect); // Закрываем SMTP соединение
       
        $this->_status = 1; // Объект снова готов к работе. Освободился от работы.
        return $this->_log['quitcode'];
    }
   
    // Метод пытается вернуть значение определенного параметра лога отправки сообщения
    // или всего массива лога.
    public function getLog( $param='' ) {
        if (strlen($param)) {
            if (isset($this->_log[$param])) {
                return $this->_log[$param];
            } else {
                return false;
            }
        } else { // Надо вернуть весь массив?
            return $this->_log;
        }
    }
   
    // Метод возвращает текущий статус работы объекта.
    // Может понадобиться при многопоточности, а пока что пусть будет.
    public function getStatus() {
        return $this->_status;
    }
}

?>
[/QUOTE]
__________________
Завсегда с вами, Алексей.
Полезные ссылки: PHP, MySQL, Школа w3c;
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог