Resolved issue 0000815: Email format standardization

Merge branch-1_7 2282:2283 into BSF


git-svn-id: http://piwigo.org/svn/trunk@2284 68402e56-0260-453c-a942-63ccdbb3a9ee
This commit is contained in:
rub 2008-03-18 22:02:33 +00:00
parent 0da8401a9c
commit 6ae74fe965
4 changed files with 68 additions and 44 deletions

View file

@ -2,7 +2,7 @@
// +-----------------------------------------------------------------------+
// | PhpWebGallery - a PHP based picture gallery |
// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
// | Copyright (C) 2003-2008 PhpWebGallery Team - http://phpwebgallery.net |
// +-----------------------------------------------------------------------+
// | file : $Id$
// | last update : $Date$
@ -200,7 +200,7 @@ function begin_users_env_nbm($is_to_send_mail = false)
{
// Init mail configuration
$env_nbm['email_format'] = get_str_email_format($conf['nbm_send_html_mail']);
$env_nbm['send_as_name'] = ((isset($conf['nbm_send_mail_as']) and !empty($conf['nbm_send_mail_as'])) ? $conf['nbm_send_mail_as'] : $conf['gallery_title']);
$env_nbm['send_as_name'] = ((isset($conf['nbm_send_mail_as']) and !empty($conf['nbm_send_mail_as'])) ? $conf['nbm_send_mail_as'] : get_mail_sender_name());
$env_nbm['send_as_mail_address'] = get_webmaster_mail_address();
$env_nbm['send_as_mail_formated'] = format_email($env_nbm['send_as_name'], $env_nbm['send_as_mail_address']);
// Init mail counter

View file

@ -2,7 +2,7 @@
// +-----------------------------------------------------------------------+
// | PhpWebGallery - a PHP based picture gallery |
// | Copyright (C) 2002-2003 Pierrick LE GALL - pierrick@phpwebgallery.net |
// | Copyright (C) 2003-2007 PhpWebGallery Team - http://phpwebgallery.net |
// | Copyright (C) 2003-2008 PhpWebGallery Team - http://phpwebgallery.net |
// +-----------------------------------------------------------------------+
// | file : $Id$
// | last update : $Date$
@ -121,21 +121,26 @@ class smtp_mail
$this->server_write('MAIL FROM: <'.$this->email_webmaster.'>'."\r\n");
$this->server_parse('250');
$to_header = 'To: ';
if (preg_match('/^\s*to\s*:.*/mi', $headers) === 0)
{
$to_header = 'To: '.implode(',', array_map(create_function('$email','return "<".$email.">";'), $recipients));
}
else
{
$to_header = '';
}
@reset($recipients);
while (list(, $email) = @each($recipients))
{
$this->server_write('RCPT TO: <'.$email.'>'."\r\n");
$this->server_parse('250');
$to_header .= '<'.$email.'>, ';
}
$this->server_write('DATA'."\r\n");
$this->server_parse('354');
$this->server_write('Subject: '.$subject."\r\n".$to_header."\r\n".$headers."\r\n\r\n".$message."\r\n");
$this->server_write('Subject: '.$subject."\r\n".(empty($to_header) ? "" : $to_header."\r\n").$headers."\r\n\r\n".$message."\r\n");
$this->server_write('.'."\r\n");
$this->server_parse('250');

View file

@ -262,17 +262,15 @@ $conf['mail_options'] = false;
// or test.
$conf['send_bcc_mail_webmaster'] = false;
// enabled_format_email:
// on true email will be formatted with name and address
// on false email will be only address
// There are webhosting wich not allow email formatted (Lycos, ...)
$conf['enabled_format_email'] = true;
// default_email_format:
// Define the default email format use to send email
// Value could be text/plain or text/html
$conf['default_email_format'] = 'text/html';
// define the name of sender mail:
// If value is empty, gallery title is used
$conf['mail_sender_name'] = '';
// smtp configuration
// (work if fsockopen function is allowed for smtp port)
// smtp_host: smtp server host

View file

@ -51,6 +51,18 @@ function encode_mime_header($str)
return '=?'.get_pwg_charset().'?Q?'.$str.'?=';
}
/*
* Returns the name of the mail sender :
*
* @return string
*/
function get_mail_sender_name()
{
global $conf;
return (empty($conf['mail_sender_name']) ? $conf['gallery_title'] : $conf['mail_sender_name']);
}
/*
* Returns an array of mail configuration parameters :
*
@ -81,7 +93,7 @@ function get_mail_configuration()
// name of the webmaster is the title of the gallery
$conf_mail['formated_email_webmaster'] =
format_email($conf['gallery_title'], $conf_mail['email_webmaster']);
format_email(get_mail_sender_name(), $conf_mail['email_webmaster']);
$conf_mail['boundary_key'] = generate_key(32);
@ -96,40 +108,50 @@ function get_mail_configuration()
*/
function format_email($name, $email)
{
global $conf;
// Spring cleaning
$cvt_email = trim(preg_replace('#[\n\r]+#s', '', $email));
$cvt_name = trim(preg_replace('#[\n\r]+#s', '', $name));
if ($conf['enabled_format_email'])
if ($cvt_name!="")
{
// Spring cleaning
$cvt_name = trim(preg_replace('#[\n\r]+#s', '', $name));
$cvt_name = encode_mime_header(
'"'
.addcslashes($cvt_name,'"')
.'"');
$cvt_name .= ' ';
}
if ($cvt_name!="")
{
$cvt_name = encode_mime_header(
'"'
.addcslashes($cvt_name,'"')
.'"');
$cvt_name .= ' ';
}
if (strpos($cvt_email, '<') === false)
{
return $cvt_name.'<'.$cvt_email.'>';
}
else
{
return $cvt_name.$cvt_email;
}
if (strpos($cvt_email, '<') === false)
{
return $cvt_name.'<'.$cvt_email.'>';
}
else
{
return $cvt_email;
return $cvt_name.$cvt_email;
}
}
/**
* Returns an email address list with minimal email string
*
* @param string with email list (email separated by comma)
*/
function get_strict_email_list($email_list)
{
$result = array();
$list = explode(',', $email_list);
foreach ($list as $email)
{
if (strpos($email, '<') !== false)
{
$email = preg_replace('/.*<(.*)>.*/i', '$1', $email);
}
$result[] = trim($email);
}
return implode(',', $result);
}
/**
* Returns an completed array template/theme
* completed with get_default_template()
@ -506,7 +528,7 @@ WHERE
* sends an email, using PhpWebGallery specific informations
*
* @param:
* - to: receiver(s) of the mail.
* - to: receiver(s) of the mail (list separated by comma).
* - args: function params of mail function:
* o from: sender [default value webmaster email]
* o Cc: array of carbon copy receivers of the mail. [default value empty]
@ -545,11 +567,6 @@ function pwg_mail($to, $args = array())
set_make_full_url();
}
if (!empty($to))
{
$to = format_email('', $to);
}
if (empty($args['from']))
{
$args['from'] = $conf_mail['formated_email_webmaster'];
@ -597,6 +614,10 @@ function pwg_mail($to, $args = array())
{
$headers.= 'To: undisclosed-recipients: ;'."\n";
}
else
{
$headers.= 'To: '.$to."\n";
}
if (!empty($args['Cc']))
{
@ -719,7 +740,7 @@ function pwg_mail($to, $args = array())
return
trigger_event('send_mail',
false, /* Result */
trigger_event('send_mail_to', $to),
trigger_event('send_mail_to', get_strict_email_list($to)),
trigger_event('send_mail_subject', $cvt_subject),
trigger_event('send_mail_content', $content),
trigger_event('send_mail_headers', $headers),