Форум портала Metropolis Галерея   
Добро пожаловать. Пожалуйста, войдите или зарегистрируйтесь.
23 Февраль 2025, 00:25 *

Форум Metropolis в мобильном формате [подробнее]
 
   Начало   Помощь Поиск Правила Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: smtpmail php via smtp  (Прочитано 1849 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
morg4n
Завсегдатай
****

Репутация: 4
Сообщений: 330

http://spimun.com

WWW Email
: 12 Апрель 2010, 22:39

smtp-func.php
Код:
<?php
$config
['smtp_username'] = 'buff10k@list.ru';  //Смените на имя своего почтового ящика.
$config['smtp_port']     = '25'// Порт работы. Не меняйте, если не уверены.
$config['smtp_host']     = 'smtp.list.ru';  //сервер для отправки почты(для наших клиентов менять не требуется)
$config['smtp_password'] = 'PASSWORD';  //Измените пароль
$config['smtp_debug']    = true;  //Если Вы хотите видеть сообщения ошибок, укажите true вместо false
$config['smtp_charset']  = 'UTF-8';   //кодировка сообщений. (или UTF-8, итд)
$config['smtp_from']     = 'buff10k@list.ru'//Ваше имя - или имя Вашего сайта. Будет показывать при прочтении в поле "От кого"

function smtpmail($mail_to$subject$message$headers='') {
         global 
$config;
        
$SEND =   "Date: ".date("D, d M Y H:i:s") . " UT\r\n";
        
$SEND .=   'Subject: =?'.$config['smtp_charset'].'?B?'.base64_encode($subject)."=?=\r\n";
        if (
$headers$SEND .= $headers."\r\n\r\n";
        else
        {
                
$SEND .= "Reply-To: ".$config['smtp_username']."\r\n";
                
$SEND .= "MIME-Version: 1.0\r\n";
                
$SEND .= "Content-Type: text/plain; charset=\"".$config['smtp_charset']."\"\r\n";
                
$SEND .= "Content-Transfer-Encoding: 8bit\r\n";
                
$SEND .= "From: \"".$config['smtp_from']."\" <".$config['smtp_username'].">\r\n";
                
$SEND .= "To: $mail_to <$mail_to>\r\n";
                
$SEND .= "X-Priority: 3\r\n\r\n";
        }
        
$SEND .=  $message."\r\n";
         if( !
$socket fsockopen($config['smtp_host'], $config['smtp_port'], $errno$errstr30) ) {
            if (
$config['smtp_debug']) echo $errno."&lt;br&gt;".$errstr;
            return 
false;
         }

            if (!
server_parse($socket"220"__LINE__)) return false;

            
fputs($socket"HELO " $config['smtp_host'] . "\r\n");
            if (!
server_parse($socket"250"__LINE__)) {
               if (
$config['smtp_debug']) echo '<p>Не могу отправить HELO!</p>';
               
fclose($socket);
               return 
false;
            }
            
fputs($socket"AUTH LOGIN\r\n");
            if (!
server_parse($socket"334"__LINE__)) {
               if (
$config['smtp_debug']) echo '<p>Не могу найти ответ на запрос авторизаци.</p>';
               
fclose($socket);
               return 
false;
            }
            
fputs($socketbase64_encode($config['smtp_username']) . "\r\n");
            if (!
server_parse($socket"334"__LINE__)) {
               if (
$config['smtp_debug']) echo '<p>Логин авторизации не был принят сервером!</p>';
               
fclose($socket);
               return 
false;
            }
            
fputs($socketbase64_encode($config['smtp_password']) . "\r\n");
            if (!
server_parse($socket"235"__LINE__)) {
               if (
$config['smtp_debug']) echo '<p>Пароль не был принят сервером как верный! Ошибка авторизации!</p>';
               
fclose($socket);
               return 
false;
            }
            
fputs($socket"MAIL FROM: <".$config['smtp_username'].">\r\n");
            if (!
server_parse($socket"250"__LINE__)) {
               if (
$config['smtp_debug']) echo '<p>Не могу отправить комманду MAIL FROM: </p>';
               
fclose($socket);
               return 
false;
            }
            
fputs($socket"RCPT TO: <" $mail_to ">\r\n");

            if (!
server_parse($socket"250"__LINE__)) {
               if (
$config['smtp_debug']) echo '<p>Не могу отправить комманду RCPT TO: </p>';
               
fclose($socket);
               return 
false;
            }
            
fputs($socket"DATA\r\n");

            if (!
server_parse($socket"354"__LINE__)) {
               if (
$config['smtp_debug']) echo '<p>Не могу отправить комманду DATA</p>';
               
fclose($socket);
               return 
false;
            }
            
fputs($socket$SEND."\r\n.\r\n");

            if (!
server_parse($socket"250"__LINE__)) {
               if (
$config['smtp_debug']) echo '<p>Не смог отправить тело письма. Письмо не было отправленно!</p>';
               
fclose($socket);
               return 
false;
            }
            
fputs($socket"QUIT\r\n");
            
fclose($socket);
            return 
TRUE;
}
function 
server_parse($socket$response$line __LINE__) {
        global 
$config;
    while (
substr($server_response31) != ' ') {
        if (!(
$server_response fgets($socket256))) {
                   if (
$config['smtp_debug']) echo "<p>Проблемы с отправкой почты!</p>$response<br>$line<br>";
                   return 
false;
                }
    }
    if (!(
substr($server_response03) == $response)) {
           if (
$config['smtp_debug']) echo "<p>Проблемы с отправкой почты!</p>$response<br>$line<br>";
           return 
false;
        }
    return 
true;
}

?>


mailer.php
Код:
<?php
//Замените настройки на нужные.
$mail_to 'philip.sadkov@gmail.com'//вам потребуется указать здесь Ваш настоящий почтовый ящик, куда должно будет прийти письмо.
$type 'html'//Можно поменять на html; plain означяет: будет присылаться чистый текст.
$charset 'windows-1251';

include(
'smtp-func.php');
if (
$_REQUEST['message'])
{
   
$message $_REQUEST['message'];
   
$subject $_REQUEST['subject'];
   
$mail_from $_REQUEST['mail_from'];
   
$replyto $_REQUEST['replyto'];
   
$headers "To: \"Administrator\" <$mail_to>\r\n".
              
"From: \"$replyto\" <$mail_from>\r\n".
              
"Reply-To: $replyto\r\n".
              
"Content-Type: text/$type; charset=\"$charset\"\r\n";
   
$sended smtpmail($mail_to$subject$message$headers);
   echo 
'<html>
        <head>
        <meta http-equiv="content-type" content="text/html; charset='
.$charset.'">
        </head>
              <body>'
;
   if (!
$sended) echo 'Писмо не удалось отправить. Пожалуйста свяжитесь с администратором сайта по адресу: '.$mail_to;
   else echo 
'Письмо было успешно отправлено. В ближайшее Вы получите ответ на него.';
   echo 
'</body>';
   exit;
}
Header('Location: mailer.html');
?>

mailer.html
Код:
<form action="mailer.php" method="POST">
<table cellpadding=0 cellspacing=0 border=1><tr>
                <td colspan=2 style="padding: 3px; border: 1px solid #C44000;"
                bgcolor="#FFFFC1">Ваше имя.</td>
        </tr><tr>
                <td style="padding: 3px;">Введите Ваше имя</td>
                <td style="padding: 3px;"><input type="text" name="replyto" value=""></td>
        </tr><tr>
                <td colspan=2>&nbsp;</td>
        </tr><tr>
                <td colspan=2 style="padding: 3px; border: 1px solid #C44000;"
                bgcolor="#FFFFC1">Поле, где гость Вашего сайта сможет указать свой почтовый ящик, для ответа.</td>
        </tr><tr>
                <td style="padding: 3px;">Введите свой обратный почтовый адрес</td>
                <td style="padding: 3px;"><input type="text" name="mail_from" value="mail@domain.tld"></td>
        </tr><tr>
                <td colspan=2>&nbsp;</td>
        </tr><tr>
                <td colspan=2 style="padding: 3px; border: 1px solid #C44000;"
                bgcolor="#FFFFC1">Поле для темы сообщения.</td>
        </tr><tr>
                <td style="padding: 3px;">Введите тему сообщения</td>
                <td style="padding: 3px;"><input type="text" name="subject" value="Название сообщения"></td>
        </tr><tr>
                <td colspan=2>&nbsp;</td>
        </tr><tr>
                <td colspan=2 style="padding: 3px; border: 1px solid #C44000;"
                bgcolor="#FFFFC1">Это поле, для ввода текста сообщения.</td>
        </tr><tr>
                <td style="padding: 3px;">Введите текст Вашего сообщения:</td>
                <td style="padding: 3px;">
        <textarea name="message" cols="40" rows="5">
        Ваше сообщение
             ------------------------------------------
        </textarea></td>
        </tr><tr>
        <td colspan=2><input type="submit" value="Отправить сообщение" style="height: 20px;"></td>
        </tr>
</table>
</form>

вот-с, эта херня не пашет, пишет:
Проблемы с отправкой почты!
250
79

Не смог отправить тело письма. Письмо не было отправленно!
Писмо не удалось отправить. Пожалуйста свяжитесь с администратором сайта по адресу: philip.sadkov@gmail.com

кто разберецца, скрипт тут
http://test.sadkov.net/huinia/mailer.html

Помогите пожалуйста.
не вдупляю я эту фигню (

morg4n
Завсегдатай
****

Репутация: 4
Сообщений: 330

http://spimun.com

WWW Email
Ответ #1 : 12 Апрель 2010, 23:29

http://test.sadkov.net/huinia/mailer.html
лежит до утра

Клалофудо
Житель форума
*****

Репутация: 111
Сообщений: 876


Ответ #2 : 13 Апрель 2010, 01:16

Цитировать
$config['smtp_port']     = '25'; // Порт работы. Не меняйте, если не уверены.

В случае с гмейлом часто прокатывает смена порта на 465. Вообще надо всё параллельно с почтовиком проверять. Кстати, исходника по ссылке нет.

Всё это я набирал в состоянии аффекта, рвал слюну, брызгал рубахой, бился головой о клавиатуру.
dimson
Житель форума
*****

Репутация: 82
Сообщений: 538


WWW
Ответ #3 : 13 Апрель 2010, 08:20

Что бы отправлять почту через php скрипт надо у себя на сервере поднимать почтовый сервер.
morg4n
Завсегдатай
****

Репутация: 4
Сообщений: 330

http://spimun.com

WWW Email
Ответ #4 : 14 Апрель 2010, 00:03

там не исходник. там рабочая версия, точнее не рабочая.. )
исходник я выложил 3 файла.
dimson - понятное дело, но есть еще и вариант с отправкой через удаленный smtp сервер)
но чот у меня не очень получаееца

morg4n
Завсегдатай
****

Репутация: 4
Сообщений: 330

http://spimun.com

WWW Email
Ответ #5 : 15 Апрель 2010, 01:31

проблема была решена с помощью использования класса phpmailer
плюс правка php.ini (для подключения ssl)
extension=php_openssl.dll (убрали ; )
reboot apache

Код:
<?

require("phpmailer/class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsSMTP(); // send via SMTP
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Username = "philip@sadkov.net"; // SMTP username
$mail->Password = "SOMEPASS"; // SMTP password
$webmaster_email = "philip@sadkov.net"; //Reply to this email ID
$email="morg4n@list.ru"; // Recipients email ID
$name="Philip"; // Recipient's name
$mail->From = $webmaster_email;
$mail->FromName = "philip@sadkov.net";
$mail->AddAddress($email,$name);
$mail->AddReplyTo($webmaster_email,"Webmaster");
$mail->WordWrap = 50; // set word wrap
#$mail->AddAttachment("/var/tmp/file.tar.gz"); // attachment
#$mail->AddAttachment("/tmp/image.jpg", "new.jpg"); // attachment
$mail->IsHTML(true); // send as HTML
$mail->Subject = "Check SUm";
$mail->Body = "Somethibg "; //HTML Body
$mail->AltBody = "This is the body when user views in plain text format"; //Text Body
if(!$mail->Send())
{
echo "Mailer Error: " . $mail->ErrorInfo;
}
else
{
echo "Message has been sent";
}
?>

* phpmailer.rar (104.31 Кб - загружено 85 раз.)

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines
Text only version | PDA version