PHPMailer рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░

рд╢реБрдн рджреЛрдкрд╣рд░
рд╕рдВрднрд╡рддрдГ рд╣рд░ рдХреЛрдИ рдЬрд┐рд╕реЗ SMTP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ PHP рдХреЛрдб рд╕реЗ рдореЗрд▓ рднреЗрдЬрдирд╛ рдерд╛, PHPMailer рд╡рд░реНрдЧ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИред
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдЖрдк рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдЖрдИрдкреА рдкрддреЗ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП PHPMailer рдХреЛ рдХреИрд╕реЗ рд╕рд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рд╕реЗ рд╣рдо рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рднреЗрдЬрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдХреЗрд╡рд▓ рдХрдИ рд╕рдлреЗрдж рдЖрдИрдкреА рдкрддреЗ рд╡рд╛рд▓реЗ рд╕рд░реНрд╡рд░ рдкрд░ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреАред рдФрд░ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдЬреЛрдбрд╝ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо PHPMailer рдХреЛрдб рд╕реЗ рдПрдХ рдмрд▓реНрдХрд┐ рдЕрдкреНрд░рд┐рдп рдмрдЧ рдХреЛ рдкрдХрдбрд╝ рд▓реЗрдВрдЧреЗред

PHPMailer рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдЕрд╡рд▓реЛрдХрди


PHPMailer рдкреИрдХреЗрдЬ рдореЗрдВ рд╕рдорд╛рди рдирд╛рдо (PHPMailer рд╡рд░реНрдЧ) рдФрд░ рдХрдИ рдкреНрд▓рдЧ-рдЗрди рд╡рд░реНрдЧ рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ POP3 рдкреВрд░реНрд╡ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╕рд╣рд┐рдд SMTP рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореЗрд▓ рднреЗрдЬрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред

PHPMailer рдХрд╛ рджреГрд╢реНрдп рд╕рдВрджреЗрд╢ рдкреИрд░рд╛рдореАрдЯрд░ (рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ, рд░рд┐рдЯрд░реНрди-рдкрд╛рде, AddAdress (), рдмреЙрдбреА, рдЗрддреНрдпрд╛рджрд┐) рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ рдФрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╡рд┐рдзрд┐ (SMTPSecure, SMTPAuth, IsMail (), IsSendMail (), IsSMTP ( ), рдЖрджрд┐), рд╕рд╛рде рд╣реА рднреЗрдЬреЗрдВ () рд╡рд┐рдзрд┐ред

рдкрддреНрд░ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рднреЗрдЬрдиреЗ рдХреА рд╡рд┐рдзрд┐ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдпрд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ рд╕реЗ рдЪреБрдирдирд╛ рд╕рдВрднрд╡ рд╣реИ: рдореЗрд▓, рд╕реЗрдВрдбрдореЗрд▓, рдИрдореЗрд▓ рдпрд╛ рдПрд╕рдПрдордПрд╕), рдЖрдкрдХреЛ PHPMailer Send () рд╡рд░реНрдЧ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ, рдореЗрд▓ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдЖрдВрддрд░рд┐рдХ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХреЛ рдПрдХ рддрд░рд╣ рд╕реЗ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╕реМрдВрдкрддрд╛ рд╣реИред ред рдЪреВрдБрдХрд┐ рд╣рдо SMTP рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдореБрдЦреНрдп рд░реВрдк рд╕реЗ class.smtp.php рдлрд╝рд╛рдЗрд▓ рд╕реЗ SMTP рдкреНрд▓рдЧрдЗрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред

PHPMailer :: IsSMTP () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, PHPMailer :: Send () рд╡рд┐рдзрд┐ рд╕рдВрд░рдХреНрд╖рд┐рдд PHPMailer :: SmtpSend ($ рд╢реАрд░реНрд╖ рд▓реЗрдЦ, $ рд╢рд░реАрд░) рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдЧрд╛, рдЗрд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЗрдбрд░ рдФрд░ рд╕рдВрджреЗрд╢ рдирд┐рдХрд╛рдп рдХреЛ рдкрд╛рд╕ рдХрд░рдирд╛ред

PHPMailer :: SmtpSend () рд╡рд┐рдзрд┐ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдХреЗ рджреВрд░рд╕реНрде SMTP рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧреА (рдпрджрд┐ рдпрд╣ PHPMailer рдСрдмреНрдЬреЗрдХреНрдЯ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬрд╛ рдЧрдпрд╛ рдкрд╣рд▓рд╛ рд╕рдВрджреЗрд╢ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдХрдиреЗрдХреНрд╢рди рдкрд╣рд▓реЗ рд╣реА рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ рдЪреБрдХрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЪрд░рдг рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛) рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдПрдХ рдорд╛рдирдХ SMTP рд╕рддреНрд░ рдЖрд░рдВрдн рдХрд░реЗрдВ (HELLO /) рдИрдПрдЪрдПрд▓рдУ, рдореЗрд▓ рдЯреВ, рдЖрд░рд╕реАрдкреАрдЯреА, рдбреЗрдЯрд╛, рдЖрджрд┐)ред

SMTP рд╕рд░реНрд╡рд░ рдХрд╛ рдХрдиреЗрдХреНрд╢рди рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рдзрд┐ PHPMailer :: SmtpConnect () рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдПрдХ рдбреЛрдореЗрди рдХреЗ рд▓рд┐рдП рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрдИ рдПрдордПрдХреНрд╕ рд░рд┐рдХреЙрд░реНрдб рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, PHPMailer :: SmtpConnect () рд╡рд┐рдзрд┐ PHPMailer рдХреЗ рдЕрдиреБрдХреНрд░рдо рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░рддреНрдпреЗрдХ SMTP рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдЧреАред

рдХреЛрдб рдореЗрдВ рдмрдЧ


рдЕрдм, PHPMailer :: SmtpConnect () рдХреЛрдб рдкрд░ рдХрд░реАрдм рд╕реЗ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:
/** * Initiates a connection to an SMTP server. * Returns false if the operation failed. * @uses SMTP * @access public * @return bool */ public function SmtpConnect() { if(is_null($this->smtp)) { $this->smtp = new SMTP(); } $this->smtp->do_debug = $this->SMTPDebug; $hosts = explode(';', $this->Host); $index = 0; $connection = $this->smtp->Connected(); // Retry while there is no connection try { while($index < count($hosts) && !$connection) { $hostinfo = array(); if (preg_match('/^(.+):([0-9]+)$/', $hosts[$index], $hostinfo)) { $host = $hostinfo[1]; $port = $hostinfo[2]; } else { $host = $hosts[$index]; $port = $this->Port; } $tls = ($this->SMTPSecure == 'tls'); $ssl = ($this->SMTPSecure == 'ssl'); if ($this->smtp->Connect(($ssl ? 'ssl://':'').$host, $port, $this->Timeout)) { $hello = ($this->Helo != '' ? $this->Helo : $this->ServerHostname()); $this->smtp->Hello($hello); if ($tls) { if (!$this->smtp->StartTLS()) { throw new phpmailerException($this->Lang('tls')); } //We must resend HELO after tls negotiation $this->smtp->Hello($hello); } $connection = true; if ($this->SMTPAuth) { if (!$this->smtp->Authenticate($this->Username, $this->Password)) { throw new phpmailerException($this->Lang('authenticate')); } } } $index++; if (!$connection) { throw new phpmailerException($this->Lang('connect_host')); } } } catch (phpmailerException $e) { $this->smtp->Reset(); if ($this->exceptions) { throw $e; } } return true; } 

рдХреЛрдб $ рдореЗрдВ рдпрд╣-> smtp SMTP рдкреНрд▓рдЧрдЗрди рдХреНрд▓рд╛рд╕ рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИред

рд╣рдо рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рд▓реЗрдЦрдХреЛрдВ рдХреЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдХреНрдпрд╛ рдерд╛ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЬрд╛рдБрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рдЖрдВрддрд░рд┐рдХ рд╡рд╕реНрддреБ рдмрдирд╛рдИ рдЧрдИ рд╣реИ рдЬреЛ SMTP рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рдмрдирд╛ рд╕рдХрддреА рд╣реИ рдпрджрд┐ рдпрд╣ PHPMailer рд╡рд░реНрдЧ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА SmtpConnect () рд╡рд┐рдзрд┐ рдХреА рдкрд╣рд▓реА рдХреЙрд▓ рд╣реИ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, PHPMailer :: Close) (рд╡рд┐рдзрд┐) $ рдХреЛ рдЪрд╛рд▓реВ рдХрд░ рд╕рдХрддреА рд╣реИ-> smtp рдореЗрдВ рдирд▓)ред

рддрдм PHPMailer :: рд╣реЛрд╕реНрдЯ рдлрд╝реАрд▓реНрдб рдХреЛ рд╕реАрдорд╛рдВрдХрдХ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ';' рдФрд░ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдбреЛрдореЗрди рдХреЗ рд▓рд┐рдП MX рд░рд┐рдХреЙрд░реНрдб рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИред рдпрджрд┐ рд╣реЛрд╕реНрдЯ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдереА (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 'smtp.yandex.ru'), рддреЛ рд╕рд░рдгреА рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рддрддреНрд╡ рд╣реЛрдЧрд╛ред

рдЕрдЧрд▓рд╛, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреЗрдХ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реИрдВред рдпрджрд┐ рдпрд╣ SmtpConnect () рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реА рдХреЙрд▓ рд╣реИ, рддреЛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ $ рдХрдиреЗрдХреНрд╢рди рдЧрд▓рдд рд╣реЛрдЧрд╛ред

рддреЛ рд╣рдо рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рдЧрдПред рдкреНрд░рддреНрдпреЗрдХ рдПрдордПрдХреНрд╕ рд░рд┐рдХреЙрд░реНрдб рдкрд░ рдПрдХ рдЪрдХреНрд░ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрдВ рдЕрдЧрд▓реЗ рдПрдордПрдХреНрд╕ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рдЕрдкрдиреЗ рд╕рд┐рд░ рдореЗрдВ рдЗрд╕ рдЪрдХреНрд░ рдХреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдХрд▓реНрдкрдирд╛ рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рдкрд╣рд▓реЗ рдПрдордПрдХреНрд╕ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд▓рд┐рдП рдЕрдЧрд░ ($ рдпрд╣-> smtp-> рдХрдиреЗрдХреНрдЯ (($ ssl? 'Ssl: //': '') $ Host, $ рдкреЛрд░реНрдЯ, $ рдпрд╣-> рдЯрд╛рдЗрдордЖрдЙрдЯ)) рдЧрд▓рдд рд▓реМрдЯрд╛? рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЪрдХреНрд░ рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХ рджреЗрдЧрд╛ рдЬреЛ рдЪрдХреНрд░ рдХреЗ рдмрд╛рдж рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрдХрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╛рдиреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рд╕рднреА рдПрдордПрдХреНрд╕ рд░рд┐рдХреЙрд░реНрдб рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХреА рдЬрд╛рдПрдЧреА рдФрд░ рд╣рдо рдЕрдкрд╡рд╛рдж рдХреЛ рдкрдХрдбрд╝ рд▓реЗрдВрдЧреЗред

рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдмрд╕реЗ рдЕрдкреНрд░рд┐рдп рдирд╣реАрдВ рд╣реИред PHPMailer рджреЛ рдореЛрдб рдореЗрдВ рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ - рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрдирд╛, рдпрд╛ ErrorInfo рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд▓рд┐рдЦрдиреЗ рдХреЗ рд╕рд╛рде рдЪреБрдкрдЪрд╛рдк рдорд░ рдЬрд╛рдирд╛ред рдЗрд╕рд▓рд┐рдП рд╕рд╛рдЗрд▓реЗрдВрдЯ рдореЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ ($ рдпрд╣-> рдЕрдкрд╡рд╛рдж == рдЧрд▓рдд рд╣реИ, рдФрд░ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдореЛрдб рд╣реИ) SmtpConnect () рд╕рд╣реА рд▓реМрдЯреЗрдЧрд╛!

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрд╕ рдмрдЧ рдиреЗ рдореБрдЭреЗ рдХреБрдЫ рд╕рдордп рд▓рд┐рдпрд╛, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ 5.2.1 рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рджреЗрдЦрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдЙрд╕реА рддрд░рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреЗ рд╣реИрдВред

рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЕрдкрдирд╛ рддреНрд╡рд░рд┐рдд рд╕реБрдзрд╛рд░ рдкреНрд░рд╕реНрддреБрдд рдХрд░реВрдБрдЧрд╛ред рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░рд┐рд▓реАрдЬ рддрдХ рдореИрдВ рдЙрд╕рдХреЗ рд╕рд╛рде рд░рд╣рддрд╛ рд╣реВрдВред рдПрдХ рдорд╣реАрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдм рдЙрдбрд╝рд╛рди рд╕рд╛рдорд╛рдиреНрдп рд╣реИред
 public function SmtpConnect() { if(is_null($this->smtp)) { $this->smtp = new SMTP(); } $this->smtp->do_debug = $this->SMTPDebug; $hosts = explode(';', $this->Host); $index = 0; $connection = $this->smtp->Connected(); // Retry while there is no connection try { while($index < count($hosts) && !$connection) { $hostinfo = array(); if (preg_match('/^(.+):([0-9]+)$/', $hosts[$index], $hostinfo)) { $host = $hostinfo[1]; $port = $hostinfo[2]; } else { $host = $hosts[$index]; $port = $this->Port; } $tls = ($this->SMTPSecure == 'tls'); $ssl = ($this->SMTPSecure == 'ssl'); $bRetVal = $this->smtp->Connect(($ssl ? 'ssl://':'').$host, $port, $this->Timeout); if ($bRetVal) { $hello = ($this->Helo != '' ? $this->Helo : $this->ServerHostname()); $this->smtp->Hello($hello); if ($tls) { if (!$this->smtp->StartTLS()) { throw new phpmailerException($this->Lang('tls')); } //We must resend HELO after tls negotiation $this->smtp->Hello($hello); } if ($this->SMTPAuth) { if (!$this->smtp->Authenticate($this->Username, $this->Password)) { throw new phpmailerException($this->Lang('authenticate')); } } $connection = true; break; } $index++; } if (!$connection) { throw new phpmailerException($this->Lang('connect_host')); } } catch (phpmailerException $e) { $this->SetError($e->getMessage()); if ($this->smtp->Connected()) $this->smtp->Reset(); if ($this->exceptions) { throw $e; } return false; } return true; } 


рдХрдИ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП PHPMailer рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ


PHPMailer рдХрд╛ SMTP рдкреНрд▓рдЧрдЗрди рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рд╛рде fsockopen, fputs рдФрд░ fgets рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЕрдЧрд░ рд╣рдорд╛рд░реА рдорд╢реАрди рдкрд░ рдХрдИ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реИрдВ рдЬреЛ рдЗрдВрдЯрд░рдиреЗрдЯ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдлреЙрдХреНрд╕рдХреЙрдкреЗрди рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдкрд╣рд▓реЗ рдХрдиреЗрдХреНрд╢рди рдкрд░ рд╕реЙрдХреЗрдЯ рдмрдирд╛рдПрдЧрд╛ред рд╣рдореЗрдВ рдХрд┐рд╕реА рднреА рдкрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдорди рдореЗрдВ рдЖрдпрд╛ рдкрд╣рд▓рд╛ рд╡рд┐рдЪрд╛рд░ рдХреНрд▓рд╛рд╕рд┐рдХ рд╕реЙрдХреЗрдЯреНрд╕ рд╕реЙрдХреЗрдЯ_рдХреНрд░рд┐рдПрдЯ, рд╕реЙрдХреЗрдЯ_рдмрд┐рди, рд╕реЙрдХреЗрдЯ_рдХрдиреЗрдХреНрдЯ рдХреЗ рдорд╛рдирдХ рдЧреБрдЪреНрдЫрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдерд╛, рдЬреЛ рд╕реЙрдХреЗрдЯ_рдмрд┐рдВрдб рдореЗрдВ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЖрдИрдкреА рдкрддреЗ рдХреЗ рд╕рд╛рде рд╕реЙрдХреЗрдЯ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕рд╛ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рд╡рд┐рдЪрд╛рд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдлрд▓ рдирд╣реАрдВ рд╣реИред рдирддреАрдЬрддрди, рдореБрдЭреЗ рд▓рдЧрднрдЧ рдкреВрд░реЗ PHPMailer SMTP рдкреНрд▓рдЧрдЗрди рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рдкрдбрд╝рд╛, рдЗрд╕рдореЗрдВ рд╕реЙрдХреЗрдЯ_рдбреНрд░реЗрдб рдФрд░ рд╕реЙрдХреЗрдЯ_рд░рд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдлрд╝реНрдпреВрдЬрд╝ рдФрд░ рдлрд╝реЗрдЯреНрд╕ рдХреА рдЬрдЧрд╣ рд▓реЗ рд▓реА, рдХреНрдпреЛрдВрдХрд┐ рд╕реЙрдХреЗрдЯ_рдХреНрд░рд┐рдПрдЯ рд╕реЗ рдирд┐рд░реНрдорд┐рдд рд╕рдВрд╕рд╛рдзрди рдХреЗ рд╕рд╛рде рдлрд╝реНрдпреВрдЬрд╝ рдФрд░ рдлрд╝реНрдпреВрдЬрд╝ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЕрд░реНрдЬрд┐рдд рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЖрддреНрдорд╛ рддрд▓рдЫрдЯ рдмрдиреА рд░рд╣реАред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реЛрдЪ рдЕрдзрд┐рдХ рд╕рдлрд▓ рд░рд╣реАред рдПрдХ stream_socket_client рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдПрдХ рд╕реНрдЯреНрд░реАрдо рд╕реЙрдХреЗрдЯ рдмрдирд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдлрд╝рд┐рдЬрд╝реЗрдЯреНрд╕ рджреНрд╡рд╛рд░рд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ! рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, SMTP рдкреНрд▓рдЧрдЗрди рдореЗрдВ рд╕рд┐рд░реНрдл рдПрдХ рд╡рд┐рдзрд┐ рдХреА рдЬрдЧрд╣, рдЖрдк рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╕рдВрдХреЗрдд рдХреЗ рд╕рд╛рде рдореЗрд▓ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП PHPMailer рд╕рд┐рдЦрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╕рд╛рде рд╣реА рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛрдб рдХреЛ рд╕реНрдкрд░реНрд╢ рди рдХрд░реЗрдВред

рд╣рдорд╛рд░рд╛ рдкреНрд▓рдЧрдЗрди рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:
 require_once 'class.smtp.php'; class SMTPX extends SMTP { public function __construct() { parent::__construct(); } public function Connect($host, $port = 0, $tval = 30, $local_ip) { // set the error val to null so there is no confusion $this->error = null; // make sure we are __not__ connected if($this->connected()) { // already connected, generate error $this->error = array("error" => "Already connected to a server"); return false; } if(empty($port)) { $port = $this->SMTP_PORT; } $opts = array( 'socket' => array( 'bindto' => "$local_ip:0", ), ); // create the context... $context = stream_context_create($opts); // connect to the smtp server $this->smtp_conn = @stream_socket_client($host.':'.$port, $errno, $errstr, $tval, // give up after ? secs STREAM_CLIENT_CONNECT, $context); // verify we connected properly if(empty($this->smtp_conn)) { $this->error = array("error" => "Failed to connect to server", "errno" => $errno, "errstr" => $errstr); if($this->do_debug >= 1) { echo "SMTP -> ERROR: " . $this->error["error"] . ": $errstr ($errno)" . $this->CRLF . '<br />'; } return false; } // SMTP server can take longer to respond, give longer timeout for first read // Windows does not have support for this timeout function if(substr(PHP_OS, 0, 3) != "WIN") socket_set_timeout($this->smtp_conn, $tval, 0); // get any announcement $announce = $this->get_lines(); if($this->do_debug >= 2) { echo "SMTP -> FROM SERVER:" . $announce . $this->CRLF . '<br />'; } return true; } } 


рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХрдиреЗрдХреНрдЯ () рд╡рд┐рдзрд┐ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рднреА рдиреНрдпреВрдирддрдо рд░реВрдк рд╕реЗ рдмрджрд▓ рдЧрдпрд╛ рд╣реИред рдХреЗрд╡рд▓ рддрд╛рд░ рдЬреЛ рд╕реАрдзреЗ рд╕реЙрдХреЗрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдЕрдиреНрдп рдкреИрд░рд╛рдореАрдЯрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ - рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЖрдИрдкреА рдкрддрд╛ред

рдЗрд╕ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ PHPMailer рд╡рд░реНрдЧ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
 require_once 'class.phpmailer.php'; class MultipleInterfaceMailer extends PHPMailer { /** * IP   ,    *    SMTP-. *      SMTPX. * @var string */ public $Ip = ''; public function __construct($exceptions = false) { parent::__construct($exceptions); } /** *      SMTPX. * @param string $ip IP       . */ public function IsSMTPX($ip = '') { if ('' !== $ip) $this->Ip = $ip; $this->Mailer = 'smtpx'; } protected function PostSend() { if ('smtpx' == $this->Mailer) { $this->SmtpSend($this->MIMEHeader, $this->MIMEBody); return; } parent::PostSend(); } /** *  ,       * IP    . * @param string $header The message headers * @param string $body The message body * @uses SMTP * @access protected * @return bool */ protected function SmtpSend($header, $body) { require_once $this->PluginDir . 'class.smtpx.php'; $bad_rcpt = array(); if(!$this->SmtpConnect()) { throw new phpmailerException($this->Lang('connect_host'), self::STOP_CRITICAL); } $smtp_from = ($this->Sender == '') ? $this->From : $this->Sender; if(!$this->smtp->Mail($smtp_from)) { throw new phpmailerException($this->Lang('from_failed') . $smtp_from, self::STOP_CRITICAL); } // Attempt to send attach all recipients foreach($this->to as $to) { if (!$this->smtp->Recipient($to[0])) { $bad_rcpt[] = $to[0]; // implement call back function if it exists $isSent = 0; $this->doCallback($isSent, $to[0], '', '', $this->Subject, $body); } else { // implement call back function if it exists $isSent = 1; $this->doCallback($isSent, $to[0], '', '', $this->Subject, $body); } } foreach($this->cc as $cc) { if (!$this->smtp->Recipient($cc[0])) { $bad_rcpt[] = $cc[0]; // implement call back function if it exists $isSent = 0; $this->doCallback($isSent, '', $cc[0], '', $this->Subject, $body); } else { // implement call back function if it exists $isSent = 1; $this->doCallback($isSent, '', $cc[0], '', $this->Subject, $body); } } foreach($this->bcc as $bcc) { if (!$this->smtp->Recipient($bcc[0])) { $bad_rcpt[] = $bcc[0]; // implement call back function if it exists $isSent = 0; $this->doCallback($isSent, '', '', $bcc[0], $this->Subject, $body); } else { // implement call back function if it exists $isSent = 1; $this->doCallback($isSent, '', '', $bcc[0], $this->Subject, $body); } } if (count($bad_rcpt) > 0 ) { //Create error message for any bad addresses $badaddresses = implode(', ', $bad_rcpt); throw new phpmailerException($this->Lang('recipients_failed') . $badaddresses); } if(!$this->smtp->Data($header . $body)) { throw new phpmailerException($this->Lang('data_not_accepted'), self::STOP_CRITICAL); } if($this->SMTPKeepAlive == true) { $this->smtp->Reset(); } return true; } /** *  ,   PHPMailer  *    SMTPX. * @uses SMTP * @access public * @return bool */ public function SmtpConnect() { if(is_null($this->smtp) || !($this->smtp instanceof SMTPX)) { $this->smtp = new SMTPX(); } $this->smtp->do_debug = $this->SMTPDebug; $hosts = explode(';', $this->Host); $index = 0; $connection = $this->smtp->Connected(); // Retry while there is no connection try { while($index < count($hosts) && !$connection) { $hostinfo = array(); if (preg_match('/^(.+):([0-9]+)$/', $hosts[$index], $hostinfo)) { $host = $hostinfo[1]; $port = $hostinfo[2]; } else { $host = $hosts[$index]; $port = $this->Port; } $tls = ($this->SMTPSecure == 'tls'); $ssl = ($this->SMTPSecure == 'ssl'); $bRetVal = $this->smtp->Connect(($ssl ? 'ssl://':'').$host, $port, $this->Timeout, $this->Ip); if ($bRetVal) { $hello = ($this->Helo != '' ? $this->Helo : $this->ServerHostname()); $this->smtp->Hello($hello); if ($tls) { if (!$this->smtp->StartTLS()) { throw new phpmailerException($this->Lang('tls')); } //We must resend HELO after tls negotiation $this->smtp->Hello($hello); } if ($this->SMTPAuth) { if (!$this->smtp->Authenticate($this->Username, $this->Password)) { throw new phpmailerException($this->Lang('authenticate')); } } $connection = true; break; } $index++; } if (!$connection) { throw new phpmailerException($this->Lang('connect_host')); } } catch (phpmailerException $e) { $this->SetError($e->getMessage()); if ($this->smtp->Connected()) $this->smtp->Reset(); if ($this->exceptions) { throw $e; } return false; } return true; } } 


рдПрдХ рдирдпрд╛ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЖрдИрдкреА рдлрд╝реАрд▓реНрдб рдорд▓реНрдЯреАрдкрд▓ рдЗрдиреНрдЯрд░рдлреЗрд╕рдореЗрд▓рд░ рдХреНрд▓рд╛рд╕ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдЖрдИрдкреА рдкрддреЗ рдХреЗ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рд╣рдо рдореЗрд▓ рднреЗрдЬрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, IsSMTPX () рдкрджреНрдзрддрд┐ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдирдП рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрддреНрд░ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдПред SMTPX рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП PostSend (), SmtpSend (), рдФрд░ SmtpConnect () рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рднреА рдлрд┐рд░ рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕реА рд╕рдордп, рдорд▓реНрдЯреАрдкрд▓рдЗрдиреНрдЯрд░рдлреЗрд╕рд░ рдХреНрд▓рд╛рд╕ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдореМрдЬреВрджрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реЗрдВрдбрдореЗрд▓ рдпрд╛ рдореВрд▓ рдПрд╕рдПрдордЯреАрдкреА рдкреНрд▓рдЧрдЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореЗрд▓ рднреЗрдЬрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рди рддреЛ рдЙрдкрдпреЛрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдФрд░ рди рд╣реА рдХреНрд▓рд╛рд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрджрд▓ рдЧрдпрд╛ рд╣реИред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирдП рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
 function getSmtpHostsByDomain($sRcptDomain) { if (getmxrr($sRcptDomain, $aMxRecords, $aMxWeights)) { if (count($aMxRecords) > 0) { for ($i = 0; $i < count($aMxRecords); ++$i) { $mxs[$aMxRecords[$i]] = $aMxWeights[$i]; } asort($mxs); $aSortedMxRecords = array_keys($mxs); $sResult = ''; foreach ($aSortedMxRecords as $r) { $sResult .= $r . ';'; } return $sResult; } } // getmxrr    ,   DNS, //,  RFC 2821,      , //   $sRcptDomain      // 0. return $sRcptDomain; } require 'MultipleInterfaceMailer.php'; $mailer = new MultipleInterfaceMailer(true); $mailer->IsSMTPX('192.168.1.1'); //   IP    //$mailer->IsSMTP();      $mailer->Host = getSmtpHostsByDomain('email.net'); $mailer->Body = 'blah-blah'; $mailer->From ='no-replay@yourdomain.net'; $mailer->AddAddress('sucreface@email.net'); $mailer->Send(); 


рдирд┐рд╖реНрдХрд░реНрд╖


рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ:
  1. PHPMailer рдореЗрдВ рдПрдХ рдмрдЧ рдлрд┐рдХреНрд╕реНрдб, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг SmtpConnect () SMTP рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рдЕрд╕рдлрд▓ рдкреНрд░рдпрд╛рд╕ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рднреА рд╣рдореЗрд╢рд╛ рд╕рд╣реА рд▓реМрдЯрд╛ред
  2. SmtpConnect () рдиреЗ рдкрд╣рд▓реЗ рд╕рдлрд▓ рдкреНрд░рдпрд╛рд╕ рд╕реЗ рдкрд╣рд▓реЗ рд╕рднреА рдПрдордПрдХреНрд╕ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдЬрд╛рдВрдЪрдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред
  3. рдПрдХ рдирдпрд╛ рдкреНрд▓рдЧрдЗрди рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рдПрд╕рдПрдордЯреАрдкреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореЗрд▓ рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреЗрдЬрдиреЗ рд╡рд╛рд▓реЗ рд╕рд░реНрд╡рд░ рдХрд╛ рдХреМрди рд╕рд╛ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ред
  4. рдирдП SMTPX рдкреНрд▓рдЧрдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрд░рд╛рдиреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛрдб рдХреЗ рд▓рд┐рдП PHPMailer рджрд░реНрдж рд░рд╣рд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реИред

рдЕрдкрдиреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдореЗрдВ рд╢реБрднрдХрд╛рдордирд╛рдПрдБ, рджреЛрд╕реНрддреЛрдВ!

Source: https://habr.com/ru/post/In138878/


All Articles