Add checking for duplicate addresses as per https://sourceforge.net/tracker2/?func=detail&aid=1830473&group_id=26031&atid=385709 thanks to Carl Corliss and Me

Note that it doesn't apply this restriction to ReplyTo as it's not unreasonable to have an address you're sending to also being a reply address
Add a GetAttachments function, which is needed to stop unit test from breaking (attachments are private)
This commit is contained in:
Marcus Bointon 2008-11-20 20:42:32 +00:00
parent 71d07b4787
commit 91b3277e88
1 changed files with 34 additions and 15 deletions

View File

@ -265,6 +265,7 @@ class PHPMailer {
private $cc = array(); private $cc = array();
private $bcc = array(); private $bcc = array();
private $ReplyTo = array(); private $ReplyTo = array();
private $all_recipients = array();
private $attachment = array(); private $attachment = array();
private $CustomHeader = array(); private $CustomHeader = array();
private $message_type = ''; private $message_type = '';
@ -333,12 +334,17 @@ class PHPMailer {
* Adds a "To" address. * Adds a "To" address.
* @param string $address * @param string $address
* @param string $name * @param string $name
* @return void * @return boolean true on success, false if addressed already used
* @author Marcus Bointon <coolbru at users.sourceforge.net>
* @author Carl Corliss <rabbitt at users.sourceforge.net>
*/ */
public function AddAddress($address, $name = '') { public function AddAddress($address, $name = '') {
$cur = count($this->to); if (!isset($this->all_recipients[strtolower(trim($address))])) {
$this->to[$cur][0] = trim($address); $this->to[] = array(trim($address), $name);
$this->to[$cur][1] = $name; $this->all_recipients[strtolower(trim($address))] = true;
return true;
}
return false;
} }
/** /**
@ -347,12 +353,15 @@ class PHPMailer {
* mailer. * mailer.
* @param string $address * @param string $address
* @param string $name * @param string $name
* @return void * @return boolean true on success, false if addressed already used
*/ */
public function AddCC($address, $name = '') { public function AddCC($address, $name = '') {
$cur = count($this->cc); if (!isset($this->all_recipients[strtolower(trim($address))])) {
$this->cc[$cur][0] = trim($address); $this->cc[] = array(trim($address), $name);
$this->cc[$cur][1] = $name; $this->all_recipients[strtolower(trim($address))] = true;
return true;
}
return false;
} }
/** /**
@ -361,12 +370,15 @@ class PHPMailer {
* mailer. * mailer.
* @param string $address * @param string $address
* @param string $name * @param string $name
* @return void * @return boolean true on success, false if addressed already used
*/ */
public function AddBCC($address, $name = '') { public function AddBCC($address, $name = '') {
$cur = count($this->bcc); if (!isset($this->all_recipients[strtolower(trim($address))])) {
$this->bcc[$cur][0] = trim($address); $this->bcc[] = array(trim($address), $name);
$this->bcc[$cur][1] = $name; $this->all_recipients[strtolower(trim($address))] = true;
return true;
}
return false;
} }
/** /**
@ -376,9 +388,7 @@ class PHPMailer {
* @return void * @return void
*/ */
public function AddReplyTo($address, $name = '') { public function AddReplyTo($address, $name = '') {
$cur = count($this->ReplyTo); $this->ReplyTo[] = array(trim($address), $name);
$this->ReplyTo[$cur][0] = trim($address);
$this->ReplyTo[$cur][1] = $name;
} }
///////////////////////////////////////////////// /////////////////////////////////////////////////
@ -1171,6 +1181,15 @@ class PHPMailer {
return true; return true;
} }
/**
* Gets all current attachments.
* Needed for testability
* @return array
*/
public function GetAttachments() {
return $this->attachment;
}
/** /**
* Attaches all fs, string, and binary attachments to the message. * Attaches all fs, string, and binary attachments to the message.
* Returns an empty string on failure. * Returns an empty string on failure.