mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-27 21:58:52 +00:00
fix for mass mail bug, plus some cleanups for php3 compatibility..CC and BCC headers are now handled properly, and there is no longer any foreach statments used.
git-svn-id: file:///svn/phpbb/trunk@1799 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
parent
8f973330a5
commit
58ad760b3c
1 changed files with 44 additions and 5 deletions
|
@ -80,8 +80,34 @@ function smtpmail($mail_to, $subject, $message, $headers = "")
|
|||
}
|
||||
$headers = chop($headers);
|
||||
|
||||
//
|
||||
// Make sure there are no bare linefeeds in the headers
|
||||
//
|
||||
$headers = preg_replace("/(?<!\r)\n/si", "\r\n", $headers);
|
||||
//
|
||||
// Ok this is rather confusing all things considered,
|
||||
// but we have to grab bcc and cc headers and treat them differently
|
||||
// Something we really didn't take into consideration originally
|
||||
//
|
||||
$header_array = explode("\r\n", $headers);
|
||||
@reset($header_array);
|
||||
$headers = "";
|
||||
while( list(, $header) = each($header_array) )
|
||||
{
|
||||
if( preg_match("/^cc:/si", $header) )
|
||||
{
|
||||
$cc = preg_replace("/^cc:(.*)/si", "\\1", $header);
|
||||
}
|
||||
else if( preg_match("/^bcc:/si", $header ))
|
||||
{
|
||||
$bcc = preg_replace("/^bcc:(.*)/si", "\\1", $header);
|
||||
$header = "";
|
||||
}
|
||||
$headers .= $header . "\r\n";
|
||||
}
|
||||
$headers = chop($headers);
|
||||
$cc = explode(",", $cc);
|
||||
$bcc = explode(",", $bcc);
|
||||
}
|
||||
if(trim($mail_to) == "")
|
||||
{
|
||||
|
@ -119,13 +145,26 @@ function smtpmail($mail_to, $subject, $message, $headers = "")
|
|||
|
||||
// Specify each user to send to and build to header.
|
||||
$to_header = "To: ";
|
||||
foreach($mail_to_array as $mail_to_address)
|
||||
@reset( $mail_to_array );
|
||||
while( list( , $mail_to_address ) = each( $mail_to_array ))
|
||||
{
|
||||
fputs($socket, "RCPT TO: $mail_to_address\r\n");
|
||||
server_parse($socket, "250");
|
||||
fputs( $socket, "RCPT TO: $mail_to_address\r\n" );
|
||||
server_parse( $socket, "250" );
|
||||
$to_header .= "<$mail_to_address>, ";
|
||||
}
|
||||
|
||||
// Ok now do the CC and BCC fields...
|
||||
@reset( $bcc );
|
||||
while( list( , $bcc_address ) = each( $bcc ))
|
||||
{
|
||||
fputs( $socket, "RCPT TO: $bcc_address\r\n" );
|
||||
server_parse( $socket, "250" );
|
||||
}
|
||||
@reset( $cc );
|
||||
while( list( , $cc_address ) = each( $cc ))
|
||||
{
|
||||
fputs($socket, "RCPT TO: $cc_address\r\n");
|
||||
server_parse($socket, "250");
|
||||
}
|
||||
// Ok now we tell the server we are ready to start sending data
|
||||
fputs($socket, "DATA\r\n");
|
||||
|
||||
|
@ -155,4 +194,4 @@ function smtpmail($mail_to, $subject, $message, $headers = "")
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
?>
|
||||
?>
|
||||
|
|
Loading…
Add table
Reference in a new issue