diff options
author | rub <rub@piwigo.org> | 2009-04-26 18:34:57 +0000 |
---|---|---|
committer | rub <rub@piwigo.org> | 2009-04-26 18:34:57 +0000 |
commit | 24ed6dab41616667ac990f0f2979c6b7082477bf (patch) | |
tree | a4630da344f71a1b97ea60cb851e2859854969db /include/class_smtp_mail.inc.php | |
parent | 45f95d64e6bdd3a54f04f3d45a8e36d51d3c7520 (diff) |
Resolved issue 0000977: Error on sendmail with smtp
git-svn-id: http://piwigo.org/svn/trunk@3261 68402e56-0260-453c-a942-63ccdbb3a9ee
Diffstat (limited to 'include/class_smtp_mail.inc.php')
-rw-r--r-- | include/class_smtp_mail.inc.php | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/include/class_smtp_mail.inc.php b/include/class_smtp_mail.inc.php index 9ace931db..b26ef1ed4 100644 --- a/include/class_smtp_mail.inc.php +++ b/include/class_smtp_mail.inc.php @@ -73,13 +73,27 @@ class smtp_mail return $this->no_error; } + function add_recipients(&$recipients, $headers, $type_header) + { + if (preg_match('/^\s*'.$type_header.'\s*:.*/mi', $headers, $matches) != 0) + { + $list = explode(',', $matches[0]); + foreach ($list as $email) + { + if (strpos($email, '<') !== false) + { + $email = preg_replace('/.*<(.*)>.*/i', '$1', $email); + } + $recipients[] = trim($email); + } + } + } + // Adaptation of pun_mail function mail($to, $subject, $message, $headers = '') { $this->no_error = true; - $recipients = explode(',', $to); - // Are we using port 25 or a custom port? if (strpos($this->host, ':') !== false) { @@ -118,15 +132,27 @@ class smtp_mail $this->server_write('MAIL FROM:<'.$this->email_webmaster.'>'."\r\n"); $this->server_parse('250'); - if (preg_match('/^\s*to\s*:.*/mi', $headers) === 0) + if ((preg_match('/^\s*to\s*:.*/mi', $headers) === 0) and !empty($to)) { - $to_header = 'To:'.implode(',', array_map(create_function('$email','return "<".$email.">";'), $recipients)); + $to_header = 'To:'.implode(',', array_map(create_function('$email','return "<".$email.">";'), explode(',', $to))); } else { $to_header = ''; } + if (!empty($to)) + { + $recipients = explode(',', $to); + } + else + { + $recipients = array(); + } + + $this->add_recipients($recipients, $headers, 'Cc'); + $this->add_recipients($recipients, $headers, 'Bcc'); + @reset($recipients); while (list(, $email) = @each($recipients)) { |