Реализация SMTP в php

264
27 ноября 2017, 19:20

Добрый день. Есть код для отправки письма с переменными с формы обратной связи. Нужно чтоб работал по SMTP. в данный момент работает через sendmail

<?php 
 /* Здесь проверяется существование переменных */ 
  if (isset($_POST['telephone'])) {$telephone = $_POST['telephone'];} 
 if (isset($_POST['fio'])) {$fio = $_POST['fio'];} 
 if (isset($_POST['email'])) {$email = $_POST['email'];} 
 if (isset($_POST['sale'])) {$sale = $_POST['sale'];} 
 if (isset($_POST['sale1'])) {$sale1 = $_POST['sale1'];} 
 if (isset($_POST['prop'])) {$prop = $_POST['prop'];} 
 if (isset($_POST['col'])) {$col = $_POST['col'];} 
 if (isset($_POST['country'])) {$country = $_POST['country'];} 
 if (isset($_POST['point'])) {$point = $_POST['point'];} 
 if (isset($_POST['transport'])) {$transport = $_POST['transport'];} 
 if (isset($_POST['suver'])) {$suver = $_POST['suver'];} 
 if (isset($_POST['inshurance'])) {$inshurance = $_POST['inshurance'];} 
 
/* Сюда впишите свою эл. почту */ 
 $address = "mail@mail.ru"; 
 
/* А здесь прописывается текст сообщения, \n - перенос строки */ 
 $mes = "Тема: новый запрос!\nФИО: $fio\nТелефон: $telephone\nE-mail: $email\nВы хотите: $sale\nТовар: $sale1\nКачественные характеристики: $prop\nКоличество: $col\nСтрана назначения: $country\nПункт назначения: $point\nДополнительные сервисы\nТранспорт и логистика $transport\nСюрвейерские услуги: $suver\nСтрахование поставки: $inshurance"; 
 
/* А эта функция как раз занимается отправкой письма на указанный вами email */ 
$sub='Запрос услуг'; //сабж 
$email='robot'; // от кого 
 $send = mail ($address,$sub,$mes,"Content-type:text/plain; charset = utf-8\r\nFrom:$email"); 
 
ini_set('short_open_tag', 'On'); 
header('Refresh: 3; URL=index.html'); 
?>

Answer 1
    <?php
    #Адрес сервера
    $SmtpServer="mail.ya.ru";
    #Адрес порта
    $SmtpPort="25";
    #Логин авторизации на сервера SMTP
    $SmtpUser="username";
    #Пароль авторизации на сервера SMTP
    $SmtpPass="password";
    #Класс работы с почтой
    class SMTPClient
    {
    function SMTPClient ($SmtpServer, $SmtpPort, $SmtpUser, $SmtpPass, $from, $to, $subject, $body)
    {
    $this->SmtpServer = $SmtpServer;
    $this->SmtpUser = base64_encode ($SmtpUser);
    $this->SmtpPass = base64_encode ($SmtpPass);
    $this->from = $from;
    $this->to = $to;
    $this->subject = $subject;
    $this->body = $body;
    if ($SmtpPort == "")
    {
    $this->PortSMTP = 25;
    }
    else
    {
    $this->PortSMTP = $SmtpPort;
    }
    }
    function SendMail ()
    {
    if ($SMTPIN = fsockopen ($this->SmtpServer, $this->PortSMTP))
    {
    fputs ($SMTPIN, "EHLO ".$HTTP_HOST."\r\n");
    $talk["hello"] = fgets ( $SMTPIN, 1024 );
    fputs($SMTPIN, "auth login\r\n");
    $talk["res"]=fgets($SMTPIN,1024);
    fputs($SMTPIN, $this->SmtpUser."\r\n");
    $talk["user"]=fgets($SMTPIN,1024);
    fputs($SMTPIN, $this->SmtpPass."\r\n");
    $talk["pass"]=fgets($SMTPIN,256);
    fputs ($SMTPIN, "MAIL FROM: <".$this->from.">\r\n");
    $talk["From"] = fgets ( $SMTPIN, 1024 );
    fputs ($SMTPIN, "RCPT TO: <".$this->to.">\r\n");
    $talk["To"] = fgets ($SMTPIN, 1024);
    fputs($SMTPIN, "DATA\r\n");
    $talk["data"]=fgets( $SMTPIN,1024 );
    fputs($SMTPIN, "To: <".$this->to.">\r\nFrom: <".$this->from.">\r\nSubject:".$this->subject."\r\n\r\n\r\n".$this->body."\r\n.\r\n");
    $talk["send"]=fgets($SMTPIN,256);
    fputs ($SMTPIN, "QUIT\r\n");
    fclose($SMTPIN);
    }
    return $talk;
    }
    }
    if (isset($_POST['telephone'])) {$telephone = $_POST['telephone'];}
 if (isset($_POST['fio'])) {$fio = $_POST['fio'];}
 if (isset($_POST['email'])) {$email = $_POST['email'];}
 if (isset($_POST['sale'])) {$sale = $_POST['sale'];}
 if (isset($_POST['sale1'])) {$sale1 = $_POST['sale1'];}
 if (isset($_POST['prop'])) {$prop = $_POST['prop'];}
 if (isset($_POST['col'])) {$col = $_POST['col'];}
 if (isset($_POST['country'])) {$country = $_POST['country'];}
 if (isset($_POST['point'])) {$point = $_POST['point'];}
 if (isset($_POST['transport'])) {$transport = $_POST['transport'];}
 if (isset($_POST['suver'])) {$suver = $_POST['suver'];}
 if (isset($_POST['inshurance'])) {$inshurance = $_POST['inshurance'];}
/* Сюда впишите свою эл. почту */
 $address = "mail@mail.ru";
/* А здесь прописывается текст сообщения, \n - перенос строки */
 $mes = "Тема: новый запрос!\nФИО: $fio\nТелефон: $telephone\nE-mail: $email\nВы хотите: $sale\nТовар: $sale1\nКачественные характеристики: $prop\nКоличество: $col\nСтрана назначения: $country\nПункт назначения: $point\nДополнительные сервисы\nТранспорт и логистика $transport\nСюрвейерские услуги: $suver\nСтрахование поставки: $inshurance";
/* А эта функция как раз занимается отправкой письма на указанный вами email */
$sub='Запрос услуг'; //сабж
$email='robot'; // от кого
    $SMTPMail = new SMTPClient ($SmtpServer, $SmtpPort, $SmtpUser, $SmtpPass,  $email, $address, $sub, $mes);
    $SMTPChat = $SMTPMail->SendMail();
    ?>
READ ALSO
Как отформатировать ввод?

Как отформатировать ввод?

Есть такой код,при работе и int,если введу 234sds,считывает 234,а мне необходимо,чтобы выдавало ошибку

233
Не работает подсчет слов в тексте (C++)

Не работает подсчет слов в тексте (C++)

Доброго времени сутокЕсть следующая задача: С клавиатуры вводится текстовая строка

268
Проверка типов в конструкторе с std::forward

Проверка типов в конструкторе с std::forward

Вопрос: нужно ли проверять типы T1, T2, T3 в конструкторе? Я так полагаю, что нужно, потому что этот конструктор запросто съедает, например, в качестве...

254
Не виден MessageBox

Не виден MessageBox

В общем, дело такое, есть класс окна, который хорошо себя показывает, обработка внутренних сообщений, отрисовки, ресайза, и тд

313