aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrub <rub@piwigo.org>2009-04-26 18:34:57 +0000
committerrub <rub@piwigo.org>2009-04-26 18:34:57 +0000
commit24ed6dab41616667ac990f0f2979c6b7082477bf (patch)
treea4630da344f71a1b97ea60cb851e2859854969db
parent45f95d64e6bdd3a54f04f3d45a8e36d51d3c7520 (diff)
Resolved issue 0000977: Error on sendmail with smtp
git-svn-id: http://piwigo.org/svn/trunk@3261 68402e56-0260-453c-a942-63ccdbb3a9ee
-rw-r--r--include/class_smtp_mail.inc.php34
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))
{