This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
redir/includes/kohana/modules/email/vendor/swift/classes/Swift/Mailer.php
2011-07-20 22:57:07 +10:00

174 lines
4.1 KiB
PHP

<?php
/*
* This file is part of SwiftMailer.
* (c) 2004-2009 Chris Corbyn
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
//@require 'Swift/Transport.php';
//@require 'Swift/Mime/Message.php';
//@require 'Swift/Mailer/RecipientIterator.php';
//@require 'Swift/Events/EventListener.php';
/**
* Swift Mailer class.
*
* @package Swift
* @author Chris Corbyn
*/
class Swift_Mailer
{
/** The Transport used to send messages */
private $_transport;
/**
* Create a new Mailer using $transport for delivery.
*
* @param Swift_Transport $transport
*/
public function __construct(Swift_Transport $transport)
{
$this->_transport = $transport;
}
/**
* Create a new Mailer instance.
*
* @param Swift_Transport $transport
* @return Swift_Mailer
*/
public static function newInstance(Swift_Transport $transport)
{
return new self($transport);
}
/**
* Send the given Message like it would be sent in a mail client.
*
* All recipients (with the exception of Bcc) will be able to see the other
* recipients this message was sent to.
*
* If you need to send to each recipient without disclosing details about the
* other recipients see {@link batchSend()}.
*
* Recipient/sender data will be retreived from the Message object.
*
* The return value is the number of recipients who were accepted for
* delivery.
*
* @param Swift_Mime_Message $message
* @param array &$failedRecipients, optional
* @return int
* @see batchSend()
*/
public function send(Swift_Mime_Message $message, &$failedRecipients = null)
{
$failedRecipients = (array) $failedRecipients;
if (!$this->_transport->isStarted())
{
$this->_transport->start();
}
return $this->_transport->send($message, $failedRecipients);
}
/**
* Send the given Message to all recipients individually.
*
* This differs from {@link send()} in the way headers are presented to the
* recipient. The only recipient in the "To:" field will be the individual
* recipient it was sent to.
*
* If an iterator is provided, recipients will be read from the iterator
* one-by-one, otherwise recipient data will be retreived from the Message
* object.
*
* Sender information is always read from the Message object.
*
* The return value is the number of recipients who were accepted for
* delivery.
*
* @param Swift_Mime_Message $message
* @param array &$failedRecipients, optional
* @param Swift_Mailer_RecipientIterator $it, optional
* @return int
* @see send()
*/
public function batchSend(Swift_Mime_Message $message,
&$failedRecipients = null,
Swift_Mailer_RecipientIterator $it = null)
{
$failedRecipients = (array) $failedRecipients;
$sent = 0;
$to = $message->getTo();
$cc = $message->getCc();
$bcc = $message->getBcc();
if (!empty($cc))
{
$message->setCc(array());
}
if (!empty($bcc))
{
$message->setBcc(array());
}
//Use an iterator if set
if (isset($it))
{
while ($it->hasNext())
{
$message->setTo($it->nextRecipient());
$sent += $this->send($message, $failedRecipients);
}
}
else
{
foreach ($to as $address => $name)
{
$message->setTo(array($address => $name));
$sent += $this->send($message, $failedRecipients);
}
}
$message->setTo($to);
if (!empty($cc))
{
$message->setCc($cc);
}
if (!empty($bcc))
{
$message->setBcc($bcc);
}
return $sent;
}
/**
* Register a plugin using a known unique key (e.g. myPlugin).
*
* @param Swift_Events_EventListener $plugin
* @param string $key
*/
public function registerPlugin(Swift_Events_EventListener $plugin)
{
$this->_transport->registerPlugin($plugin);
}
/**
* The Transport used to send messages.
* @return Swift_Transport
*/
public function getTransport()
{
return $this->_transport;
}
}