vendor/swiftmailer/lib/classes/Swift/Mailer.php
author ymh <ymh.work@gmail.com>
Sat, 24 Sep 2011 15:40:41 +0200
changeset 0 7f95f8617b0b
permissions -rwxr-xr-x
first commit
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
<?php
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
/*
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
 * This file is part of SwiftMailer.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
 * (c) 2004-2009 Chris Corbyn
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
 *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
 * For the full copyright and license information, please view the LICENSE
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
 * file that was distributed with this source code.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
 */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
/**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
 * Swift Mailer class.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
 * 
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
 * @package Swift
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
 * @author Chris Corbyn
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
 */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
class Swift_Mailer
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
{
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
  
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
  /** The Transport used to send messages */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
  private $_transport;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
  
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
  /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
   * Create a new Mailer using $transport for delivery.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
   * 
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
   * @param Swift_Transport $transport
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
   */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
  public function __construct(Swift_Transport $transport)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
  {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
    $this->_transport = $transport;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
  }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
  /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
   * Create a new Mailer instance.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
   * 
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
   * @param Swift_Transport $transport
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
   * @return Swift_Mailer
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
   */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
  public static function newInstance(Swift_Transport $transport)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
  {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
    return new self($transport);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
  }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
  /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
   * Create a new class instance of one if the message services
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
   * For example 'mimepart' would create a 'message.mimepart' instance
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
   *
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
   * @param string $service
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
   * @return object
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
   */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
  public function createMessage($service = 'message')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
  {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
    return Swift_DependencyContainer::getInstance()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
      ->lookup('message.'.$service);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
  }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
  /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
   * Send the given Message like it would be sent in a mail client.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
   * 
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
   * All recipients (with the exception of Bcc) will be able to see the other
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
   * recipients this message was sent to.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
   * 
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
   * Recipient/sender data will be retreived from the Message object.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
   * 
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
   * The return value is the number of recipients who were accepted for
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
   * delivery.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
   * 
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
   * @param Swift_Mime_Message $message
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
   * @param array &$failedRecipients, optional
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
   * @return int
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
   */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
  public function send(Swift_Mime_Message $message, &$failedRecipients = null)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
  {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
    $failedRecipients = (array) $failedRecipients;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
    
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
    if (!$this->_transport->isStarted())
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
      $this->_transport->start();
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
    
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
    $sent = 0;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
    
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
    try
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
      $sent = $this->_transport->send($message, $failedRecipients);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
    catch (Swift_RfcComplianceException $e)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
      foreach ($message->getTo() as $address => $name)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
      {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
        $failedRecipients[] = $address;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
      }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
    
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
    return $sent;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
  }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
  
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
  /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
   * Register a plugin using a known unique key (e.g. myPlugin).
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
   * 
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
   * @param Swift_Events_EventListener $plugin
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
   * @param string $key
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
   */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
  public function registerPlugin(Swift_Events_EventListener $plugin)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
  {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
    $this->_transport->registerPlugin($plugin);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
  }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
  
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
  /**
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
   * The Transport used to send messages.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
   * @return Swift_Transport
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
   */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
  public function getTransport()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
  {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
    return $this->_transport;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
  }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
}