summaryrefslogtreecommitdiffstats
path: root/system/libraries/Email.php
diff options
context:
space:
mode:
authorAndrey Andreev <narf@devilix.net>2016-07-19 15:04:02 +0200
committerAndrey Andreev <narf@devilix.net>2016-07-22 15:17:33 +0200
commit0c821bbeb549077eb5c0550e6de6df0adba3d4fa (patch)
tree3563db89c65183ba40b13b1aca15ac67d5c14fce /system/libraries/Email.php
parent19ca6442222a316ca2400252a8917426046a3eda (diff)
Fix #4712
Diffstat (limited to 'system/libraries/Email.php')
-rw-r--r--system/libraries/Email.php33
1 files changed, 23 insertions, 10 deletions
diff --git a/system/libraries/Email.php b/system/libraries/Email.php
index f8772c656..be89d6569 100644
--- a/system/libraries/Email.php
+++ b/system/libraries/Email.php
@@ -1919,6 +1919,7 @@ class CI_Email {
if ( ! $this->_send_command('from', $this->clean_email($this->_headers['From'])))
{
+ $this->_smtp_end();
return FALSE;
}
@@ -1926,6 +1927,7 @@ class CI_Email {
{
if ( ! $this->_send_command('to', $val))
{
+ $this->_smtp_end();
return FALSE;
}
}
@@ -1936,6 +1938,7 @@ class CI_Email {
{
if ($val !== '' && ! $this->_send_command('to', $val))
{
+ $this->_smtp_end();
return FALSE;
}
}
@@ -1947,6 +1950,7 @@ class CI_Email {
{
if ($val !== '' && ! $this->_send_command('to', $val))
{
+ $this->_smtp_end();
return FALSE;
}
}
@@ -1954,6 +1958,7 @@ class CI_Email {
if ( ! $this->_send_command('data'))
{
+ $this->_smtp_end();
return FALSE;
}
@@ -1963,30 +1968,38 @@ class CI_Email {
$this->_send_data('.');
$reply = $this->_get_smtp_data();
-
$this->_set_error_message($reply);
+ $this->_smtp_end();
+
if (strpos($reply, '250') !== 0)
{
$this->_set_error_message('lang:email_smtp_error', $reply);
return FALSE;
}
- if ($this->smtp_keepalive)
- {
- $this->_send_command('reset');
- }
- else
- {
- $this->_send_command('quit');
- }
-
return TRUE;
}
// --------------------------------------------------------------------
/**
+ * SMTP End
+ *
+ * Shortcut to send RSET or QUIT depending on keep-alive
+ *
+ * @return void
+ */
+ protected function _smtp_end()
+ {
+ ($this->smtp_keepalive)
+ ? $this->_send_command('reset')
+ : $this->_send_command('quit');
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
* SMTP Connect
*
* @return string