Vergleich inc/mailhandlers/smtp.php - 1.6.1 - 1.6.13

  Keine Änderungen   Hinzugefügt   Modifiziert   Entfernt
Zeile 6Zeile 6
 * Website: http://mybb.com
* License: http://mybb.com/about/license
*

 * Website: http://mybb.com
* License: http://mybb.com/about/license
*

 * $Id: smtp.php 5016 2010-06-12 00:24:02Z RyanGordon $

 * $Id$

 */

// Disallow direct access to this file for security reasons

 */

// Disallow direct access to this file for security reasons

Zeile 128Zeile 128
	 * @var boolean
*/
public $keep_alive = false;

	 * @var boolean
*/
public $keep_alive = false;

 

/**
* Whether to use TLS encryption.
*
* @var boolean
*/
public $use_tls = false;


function __construct()
{


function __construct()
{

Zeile 138Zeile 145
		{
case MYBB_SSL:
$protocol = 'ssl://';

		{
case MYBB_SSL:
$protocol = 'ssl://';

				break;

				break;

			case MYBB_TLS:

			case MYBB_TLS:

				$protocol = 'tls://';

				$this->use_tls = true;

				break;
}

if(empty($mybb->settings['smtp_host']))
{
$this->host = @ini_get('SMTP');

				break;
}

if(empty($mybb->settings['smtp_host']))
{
$this->host = @ini_get('SMTP');

		}
else
{

		}
else
{

			$this->host = $mybb->settings['smtp_host'];
}

$this->helo = $this->host;

			$this->host = $mybb->settings['smtp_host'];
}

$this->helo = $this->host;





		$this->host = $protocol . $this->host;

if(empty($mybb->settings['smtp_port']) && !empty($protocol) && !@ini_get('smtp_port'))

		$this->host = $protocol . $this->host;

if(empty($mybb->settings['smtp_port']) && !empty($protocol) && !@ini_get('smtp_port'))

Zeile 168Zeile 175
		else if(!empty($mybb->settings['smtp_port']))
{
$this->port = $mybb->settings['smtp_port'];

		else if(!empty($mybb->settings['smtp_port']))
{
$this->port = $mybb->settings['smtp_port'];

		}

		}

	
$this->password = $mybb->settings['smtp_pass'];
$this->username = $mybb->settings['smtp_user'];
}

	
$this->password = $mybb->settings['smtp_pass'];
$this->username = $mybb->settings['smtp_user'];
}





	/**
* Sends the email.
*

	/**
* Sends the email.
*

Zeile 185Zeile 192

if(!$this->connected())
{


if(!$this->connected())
{

			$this->connect();




			if(!$this->connect())
{
$this->close();
}

		}

if($this->connected())

		}

if($this->connected())

		{

		{

			if(!$this->send_data('MAIL FROM:<'.$this->from.'>', '250'))
{
$this->fatal_error("The mail server does not understand the MAIL FROM command. Reason: ".$this->get_error());

			if(!$this->send_data('MAIL FROM:<'.$this->from.'>', '250'))
{
$this->fatal_error("The mail server does not understand the MAIL FROM command. Reason: ".$this->get_error());

Zeile 226Zeile 236
				// Queue the actual message
$this->message = str_replace("\n.", "\n..", $this->message);
$this->send_data($this->message);

				// Queue the actual message
$this->message = str_replace("\n.", "\n..", $this->message);
$this->send_data($this->message);

			}
else

			}
else

			{
$this->fatal_error("The mail server did not understand the DATA command");
return false;

			{
$this->fatal_error("The mail server did not understand the DATA command");
return false;

Zeile 274Zeile 284
				return false;
}


				return false;
}


			if(!empty($this->username) && !empty($this->password))

















			if($this->use_tls || (!empty($this->username) && !empty($this->password)))
{
$helo = 'EHLO';
}
else
{
$helo = 'HELO';
}

$data = $this->send_data("{$helo} {$this->helo}", '250');
if(!$data)
{
$this->fatal_error("The server did not understand the {$helo} command");
return false;
}

if($this->use_tls && preg_match("#250( |-)STARTTLS#mi", $data))

			{

			{

				$data = $this->send_data('EHLO ' . $this->helo, '250');












				if(!$this->send_data('STARTTLS', '220'))
{
$this->fatal_error("The server did not understand the STARTTLS command. Reason: ".$this->get_error());
return false;
}
if(!@stream_socket_enable_crypto($this->connection, true, STREAM_CRYPTO_METHOD_TLS_CLIENT))
{
$this->fatal_error("Failed to start TLS encryption");
return false;
}
// Resend EHLO to get updated service list
$data = $this->send_data("{$helo} {$this->helo}", '250');

				if(!$data)
{
$this->fatal_error("The server did not understand the EHLO command");

				if(!$data)
{
$this->fatal_error("The server did not understand the EHLO command");

					return false;
}
preg_match("#250-AUTH( |=)(.+)$#mi", $data, $matches);
if(!$this->auth($matches[2]))
{
$this->fatal_error("MyBB was unable to authenticate you against the SMTP server");

 
					return false;
}
}

					return false;
}
}

			else



if(!empty($this->username) && !empty($this->password))

			{

			{

				if(!$this->send_data('HELO ' . $this->helo, '250'))


				preg_match("#250( |-)AUTH( |=)(.+)$#mi", $data, $matches);
if(!$this->auth($matches[3]))

				{

				{

					$this->fatal_error("The server did not understand the HELO command");

 
					return false;
}
}

					return false;
}
}

Zeile 301Zeile 333
		}
else
{

		}
else
{

			$this->fatal_error("Unable to connect to the mail server with the given details.<br /><br />{$error_number}: {$error_string}");

			$this->fatal_error("Unable to connect to the mail server with the given details. Reason: {$error_number}: {$error_string}");

			return false;
}
}

			return false;
}
}

Zeile 316Zeile 348
	{
global $lang, $mybb;


	{
global $lang, $mybb;


		$auth_methods = explode(" ", $auth_methods);

		$auth_methods = explode(" ", trim($auth_methods));

		
if(in_array("LOGIN", $auth_methods))
{

		
if(in_array("LOGIN", $auth_methods))
{

Zeile 387Zeile 419
				break;
}
}

				break;
}
}

 
		$string = trim($string);

		$this->data = $string;

		$this->data = $string;

		$this->code = substr(trim($this->data), 0, 3);

		$this->code = substr($this->data, 0, 3);

		return $string;
}


		return $string;
}