I
I
Ismar2015-11-07 11:22:16
PHP
Ismar, 2015-11-07 11:22:16

How to send an email using smtp?

I did not understand some points, please explain what you need to enter in Auth login,
login and password

function get_data($smtp_conn)
    {
        $data="";
        while($str = fgets($smtp_conn,515))
        {
            $data .= $str;
            if(substr($str,3,1) == " ") { break; }
        }
        return $data;
    }

    $header="Date: ".date("D, j M Y G:i:s")." +0700\r\n";
    $header.="From: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode(‘Максим’)))."?= <[email protected]>\r\n";
    $header.="X-Mailer: The Bat! (v3.99.3) Professional\r\n";
    $header.="Reply-To: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode(‘Максим’)))."?= <[email protected]>\r\n";
    $header.="X-Priority: 3 (Normal)\r\n";
    $header.="Message-ID: <172562218.".date("YmjHis")."@mail.ru>\r\n";
    $header.="To: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode(‘Сергей’)))."?= <[email protected]>\r\n";
    $header.="Subject: =?windows-1251?Q?".str_replace("+","_",str_replace("%","=",urlencode(‘проверка’)))."?=\r\n";
    $header.="MIME-Version: 1.0\r\n";
    $header.="Content-Type: text/plain; charset=windows-1251\r\n";
    $header.="Content-Transfer-Encoding: 8bit\r\n";

    $text="привет, проверка связи.";

    $smtp_conn = fsockopen("smtp.mail.ru", 25,$errno, $errstr, 10);
    if(!$smtp_conn) {print "соединение с серверов не прошло"; fclose($smtp_conn); exit;}
    $data = get_data($smtp_conn);
    fputs($smtp_conn,"EHLO vasya\r\n");
    $code = substr(get_data($smtp_conn),0,3);
    if($code != 250) {print "ошибка приветсвия EHLO"; fclose($smtp_conn); exit;}
    fputs($smtp_conn,"AUTH LOGIN\r\n");// Что нужно сюда писать? какой логин?
    $code = substr(get_data($smtp_conn),0,3);
    if($code != 334) {print "сервер не разрешил начать авторизацию"; fclose($smtp_conn); exit;}

    fputs($smtp_conn,base64_encode("login")."\r\n");// Что нужно сюда писать? логин чего?
    $code = substr(get_data($smtp_conn),0,3);
    if($code != 334) {print "ошибка доступа к такому юзеру"; fclose($smtp_conn); exit;}

    fputs($smtp_conn,base64_encode("password")."\r\n");// Что нужно сюда писать? пароль от чего?
    $code = substr(get_data($smtp_conn),0,3);
    if($code != 235) {print "не правильный пароль"; fclose($smtp_conn); exit;}

    $size_msg=strlen($header."\r\n".$text);

    fputs($smtp_conn,"MAIL FROM:<[email protected]> SIZE=".$size_msg."\r\n");// Как я понял здесь майл от кого 
    $code = substr(get_data($smtp_conn),0,3);
    if($code != 250) {print "сервер отказал в команде MAIL FROM"; fclose($smtp_conn); exit;}

    fputs($smtp_conn,"RCPT TO:<[email protected]>\r\n");// здесь кому
    $code = substr(get_data($smtp_conn),0,3);
    if($code != 250 AND $code != 251) {print "Сервер не принял команду RCPT TO"; fclose($smtp_conn); exit;}

    fputs($smtp_conn,"DATA\r\n");
    $code = substr(get_data($smtp_conn),0,3);
    if($code != 354) {print "сервер не принял DATA"; fclose($smtp_conn); exit;}

    fputs($smtp_conn,$header."\r\n".$text."\r\n.\r\n");
    $code = substr(get_data($smtp_conn),0,3);
    if($code != 250) {print "ошибка отправки письма"; fclose($smtp_conn); exit;}

    fputs($smtp_conn,"QUIT\r\n");
    fclose($smtp_conn);

Answer the question

In order to leave comments, you need to log in

3 answer(s)
E
Eugene Pukha, 2015-11-07
@Ismar

You can use the ready-made phpMailer library - https://github.com/PHPMailer/PHPMailer

S
Sergey, 2015-11-07
Protko @Fesor

swiftmailer.org
stop writing bikes.

V
Vahe, 2015-11-07
@vahe_2000

Use Pear Mail -> GitHub , pear.php.net

<?php
// Pear Mail Library(Груша Почта Библиотека)
require "Mail.php";

$from = '<from.gmail.com>';
$to = '<to.yahoo.com>';
$subject = 'Здравствуй!';
$body = "Привет,\n\n как дела?";

$headers = array(
    'From' => $from,
    'To' => $to,
    'Subject' => $subject
);

$smtp = Mail::factory('smtp', array(
        'host' => 'ssl://smtp.gmail.com',
        'port' => '465',
        'auth' => true,
        'username' => '[email protected]',
        'password' => 'passwordxxx'
    ));

$mail = $smtp->send($to, $headers, $body);

if (PEAR::isError($mail)) {
    echo('<p>' . $mail->getMessage() . '</p>');
} else {
    echo('<p>Сообщение успешно отправлено!</p>');
}
?>

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question