<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mihalytch personal blog &#187; mail</title>
	<atom:link href="http://mihalytch.org.ua/tag/mail/feed" rel="self" type="application/rss+xml" />
	<link>http://mihalytch.org.ua</link>
	<description>Все о высоких технологиях</description>
	<lastBuildDate>Mon, 05 Dec 2011 16:05:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Отправка почты средствами PHP</title>
		<link>http://mihalytch.org.ua/programming/php/sending-e_mails.html</link>
		<comments>http://mihalytch.org.ua/programming/php/sending-e_mails.html#comments</comments>
		<pubDate>Fri, 04 Jul 2008 14:07:43 +0000</pubDate>
		<dc:creator>mihal</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[mail]]></category>

		<guid isPermaLink="false">http://mihalytch.org.ua/programming/php/sending-e_mails.html</guid>
		<description><![CDATA[Для отправки почты существует множество уже написанных функций и библиотек&#8230; Самый простой способ &#8211; это отправка почты с помощью функции: [...]]]></description>
			<content:encoded><![CDATA[<p>Для отправки почты существует множество уже написанных функций и библиотек&#8230;</p>
<p>Самый простой способ &#8211; это отправка почты с помощью функции:</p>
<pre class="brush: php; title: ; notranslate">bool mail (string $to, string $subject, string $message
                   [, string $additional_headers[, string $additional_parameters ]])</pre>
<p><span id="more-37"></span></p>
<p>По мнению автора более надежный способ отправки почты средствами PHP &#8211; это отправка письма через SMTP с помощью сокетов.</p>
<p>Ниже приведен код класса для отправки писем через SMTP:</p>
<pre class="brush: php; title: ; notranslate">
class SendMail {
	private $smtp_username = &quot;&quot;; // имя пользователя
	private $smtp_port     = &quot;&quot;; // порт для отправки почты
	private $smtp_host     = &quot;&quot;; // почтовый smtp-сервер
	private $smtp_password = &quot;&quot;; // пароль
	private $smtp_debug    = &quot;&quot;; // true - включен вывод ошибок
	                                      // false - выключен вывод ошибок
	private $smtp_charset  = &quot;&quot;; // кодировка тела письма
	private $smtp_from     = &quot;&quot;; // имя отправителя

	public function send ($mail_to, $subject, $message, $headers='') {

        $mail_body = &quot;Date: &quot;.date(&quot;D, d M Y H:i:s&quot;) . &quot; UT\r\n&quot;;
        $mail_body .= 'Subject: =?'.$this-&amp;gt;smtp_charset.'?B?'.base64_encode($subject).&quot;=?=\r\n&quot;;

        if ($headers) {
            $mail_body .= $headers.&quot;\r\n\r\n&quot;;
        } else {
            $mail_body .= &quot;Reply-To: &quot;.$this-&amp;gt;smtp_username.&quot;\r\n&quot;;
            $mail_body .= &quot;MIME-Version: 1.0\r\n&quot;;
            $mail_body .= &quot;Content-Type: text/plain; charset=\&quot;&quot;.$this-&amp;gt;smtp_charset.&quot;\&quot;\r\n&quot;;
            $mail_body .= &quot;Content-Transfer-Encoding: 8bit\r\n&quot;;
            $mail_body .= &quot;From: \&quot;&quot;.$this-&amp;gt;smtp_from.&quot;\&quot; &amp;lt;&quot;.$this-&amp;gt;smtp_username.&quot;&amp;gt;\r\n&quot;;
            $mail_body .= &quot;To: $mail_to &amp;lt;$mail_to&amp;gt;\r\n&quot;;
            $mail_body .= &quot;X-Priority: 3\r\n\r\n&quot;;
        }

        $mail_body .=  $message.&quot;\r\n&quot;;

        if( !$socket = fsockopen($this-&amp;gt;smtp_host, $this-&amp;gt;smtp_port, $errno, $errstr, 30) ) {
            if ($this-&amp;gt;smtp_debug) echo $errno.&quot;&amp;lt;br&amp;gt;&quot;.$errstr;
            return false;
        }

        if (!$this-&amp;gt;server_parse($socket, &quot;220&quot;, __LINE__)) return false;

        fputs($socket, &quot;EHLO &quot; . $this-&amp;gt;smtp_host . &quot;\r\n&quot;);

        if (!$this-&amp;gt;server_parse($socket, &quot;250&quot;, __LINE__)) {
            if ($this-&amp;gt;smtp_debug) echo 'I can not send HELO!';
            fclose($socket);
            return false;
        }

        fputs($socket, &quot;AUTH LOGIN\r\n&quot;);

        if (!$this-&amp;gt;server_parse($socket, &quot;334&quot;, __LINE__)) {
            if ($this-&amp;gt;smtp_debug) echo 'I can not find an answer to request authorization.';
            fclose($socket);
            return false;
        }

        fputs($socket, base64_encode($this-&amp;gt;smtp_username) . &quot;\r\n&quot;);

        if (!$this-&amp;gt;server_parse($socket, &quot;334&quot;, __LINE__)) {
            if ($this-&amp;gt;smtp_debug) echo 'Login authentication server has not been adopted!';
            fclose($socket);
            return false;
        }

        fputs($socket, base64_encode($this-&amp;gt;smtp_password) . &quot;\r\n&quot;);

        if (!$this-&amp;gt;server_parse($socket, &quot;235&quot;, __LINE__)) {
            if ($this-&amp;gt;smtp_debug) echo 'Password was not adopted as a server right! Error authorise!';
            fclose($socket);
            return false;
        }

        fputs($socket, &quot;MAIL FROM: &amp;lt;&quot;.$this-&amp;gt;smtp_username.&quot;&amp;gt;\r\n&quot;);

        if (!$this-&amp;gt;server_parse($socket, &quot;250&quot;, __LINE__)) {
            if ($this-&amp;gt;smtp_debug) echo 'I can not send a command MAIL FROM: ';
            fclose($socket);
            return false;
        }
        fputs($socket, &quot;RCPT TO: &amp;lt;&quot; . $mail_to . &quot;&amp;gt;\r\n&quot;);

        if (!$this-&amp;gt;server_parse($socket, &quot;250&quot;, __LINE__)) {
            if ($this-&amp;gt;smtp_debug) echo 'I can not send a command RCPT TO: ';
            fclose($socket);
            return false;
        }

        fputs($socket, &quot;DATA\r\n&quot;);

        if (!$this-&amp;gt;server_parse($socket, &quot;354&quot;, __LINE__)) {
            if ($this-&amp;gt;smtp_debug) echo 'I can not send a command DATA';
            fclose($socket);
            return false;
        }

        fputs($socket, $mail_body.&quot;\r\n.\r\n&quot;);

        if (!$this-&amp;gt;server_parse($socket, &quot;250&quot;, __LINE__)) {
            if ($this-&amp;gt;smtp_debug) echo 'No body was able to send letters. Letter was not sent!';
            fclose($socket);
            return false;
        }

        fputs($socket, &quot;QUIT\r\n&quot;);
        fclose($socket);

        return true;
	}

	private function server_parse($socket, $response, $line = __LINE__) {
        global $config;
    	while (substr($server_response, 3, 1) != ' ') {
	        if (!($server_response = fgets($socket, 256))) {
	               if ($this-&amp;gt;smtp_debug) echo &quot;Problems sending mail! $response$line&quot;;
                   return false;
                }
    	}

	    if (!(substr($server_response, 0, 3) == $response)) {
           if ($this-&amp;gt;smtp_debug) echo &quot;Problems sending mail!$response$line&quot;;
           return false;
        }

    	return true;
	}

}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://mihalytch.org.ua/programming/php/sending-e_mails.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

