merge -c3261 from trunk to branch 2.0

Resolved issue 0000977: Error on sendmail with smtp 

git-svn-id: http://piwigo.org/svn/branches/2.0@3262 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
rub
2009-04-26 18:36:17 +00:00
parent 6d758aec6b
commit d50e5963ff
+30 -4
View File
@@ -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))
{