vendor/swiftmailer/doc/sending.rst
author ymh <ymh.work@gmail.com>
Fri, 04 Nov 2011 11:52:47 +0100
changeset 24 57ff6d39f88c
parent 0 7f95f8617b0b
permissions -rwxr-xr-x
first full dynamic version of the bundle
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
Sending Messages
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
Quick Reference for Sending a Message
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
-------------------------------------
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
Sending a message is very straightforward. You create a Transport, use it to
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
create the Mailer, then you use the Mailer to send the message.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
To send a Message:
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
* Create a Transport from one of the provided Transports --
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
  ``Swift_SmtpTransport``, ``Swift_SendmailTransport``,
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
  ``Swift_MailTransport`` or one of the aggregate Transports.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
* Create an instance of the ``Swift_Mailer`` class, using the Transport as
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
  it's constructor parameter.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
* Create a Message.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
* Send the message via the ``send()`` method on the Mailer object.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
When using ``send()`` the message will be sent just like it would
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
be sent if you used your mail client. An integer is returned which includes
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
the number of successful recipients. If none of the recipients could be sent
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
to then zero will be returned, which equates to a boolean
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
``false``. If you set two ``To:`` recipients and
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
three ``Bcc:`` recipients in the message and all of the
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
recipients are delivered to successfully then the value 5 will be returned.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
.. code-block:: php
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
    require_once 'lib/swift_required.php';
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 the Transport
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
    $transport = Swift_SmtpTransport::newInstance('smtp.example.org', 25)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
      ->setUsername('your username')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
      ->setPassword('your password')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
      ;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
    /*
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
    You could alternatively use a different transport such as Sendmail or Mail:
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
    //Sendmail
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
    $transport = Swift_SendmailTransport::newInstance('/usr/sbin/sendmail -bs');
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
    //Mail
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
    $transport = Swift_MailTransport::newInstance();
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
    */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
    //Create the Mailer using your created Transport
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
    $mailer = Swift_Mailer::newInstance($transport);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
    //Create a message
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
    $message = Swift_Message::newInstance('Wonderful Subject')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
      ->setFrom(array('john@doe.com' => 'John Doe'))
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
      ->setTo(array('receiver@domain.org', 'other@domain.org' => 'A name'))
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
      ->setBody('Here is the message itself')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
      ;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
  
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
    //Send the message
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
    $result = $mailer->send($message);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
Transport Types
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
~~~~~~~~~~~~~~~
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
A Transport is the component which actually does the sending. You need to
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
provide a Transport object to the Mailer class and there are several possible
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
options.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
Typically you will not need to know how a Transport works under-the-surface,
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
you will only need to know how to create an instance of one, and which one to
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
use for your environment.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
The SMTP Transport
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
..................
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
The SMTP Transport sends messages over the (standardized) Simple Message Transfer
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
Protocol.  It can deal with encryption and authentication.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
The SMTP Transport, ``Swift_SmtpTransport`` is without doubt the most commonly
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
used Transport because it will work on 99% of web servers (I just made that
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
number up, but you get the idea). All the server needs is the ability to
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
connect to a remote (or even local) SMTP server on the correct port number
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
(usually 25).
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
SMTP servers often require users to authenticate with a username and password
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
before any mail can be sent to other domains. This is easily achieved using
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
Swift Mailer with the SMTP Transport.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
SMTP is a protocol -- in other words it's a "way" of communicating a job
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
to be done (i.e. sending a message). The SMTP protocol is the fundamental
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
basis on which messages are delivered all over the internet 7 days a week, 365
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
days a year. For this reason it's the most "direct" method of sending messages
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
you can use and it's the one that will give you the most power and feedback
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
(such as delivery failures) when using Swift Mailer.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
Because SMTP is generally run as a remote service (i.e. you connect to it over
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
the network/internet) it's extremely portable from server-to-server. You can
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
easily store the SMTP server address and port number in a configuration file
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
within your application and adjust the settings accordingly if the code is
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
moved or if the SMTP server is changed.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
Some SMTP servers -- Google for example -- use encryption for
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
security reasons. Swift Mailer supports using both SSL and TLS encryption
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
settings.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
Using the SMTP Transport
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
^^^^^^^^^^^^^^^^^^^^^^^^
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
The SMTP Transport is easy to use. Most configuration options can be set with
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
the constructor.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
To use the SMTP Transport you need to know which SMTP server your code needs
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
to connect to. Ask your web host if you're not sure. Lots of people ask me who
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
to connect to -- I really can't answer that since it's a setting that's
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
extremely specific to your hosting environment.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
To use the SMTP Transport:
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
* Call ``Swift_SmtpTransport::newInstance()`` with the SMTP server name and
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
  optionally with a port number (defaults to 25).
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   124
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
* Use the returned object to create the Mailer.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   126
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
A connection to the SMTP server will be established upon the first call to
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
``send()``.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   129
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   130
.. code-block:: php
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   131
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   132
    require_once 'lib/swift_required.php';
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   133
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   134
    //Create the Transport
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   135
    $transport = Swift_SmtpTransport::newInstance('smtp.example.org', 25);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   136
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   137
    //Create the Mailer using your created Transport
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   138
    $mailer = Swift_Mailer::newInstance($transport);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   139
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   140
    /*
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   141
    It's also possible to use multiple method calls
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   142
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   143
    $transport = Swift_SmtpTransport::newInstance()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   144
      ->setHost('smtp.example.org')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   145
      ->setPort(25)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   146
      ;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   147
    */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   148
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   149
Encrypted SMTP
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   150
^^^^^^^^^^^^^^
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   151
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   152
You can use SSL or TLS encryption with the SMTP Transport by specifying it as
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   153
a parameter or with a method call.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   154
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   155
To use encryption with the SMTP Transport:
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   156
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   157
* Pass the encryption setting as a third parameter to
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   158
  ``Swift_SmtpTransport::newInstance()``; or
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   159
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   160
* Call the ``setEncryption()`` method on the Transport.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   161
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   162
A connection to the SMTP server will be established upon the first call to
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   163
``send()``. The connection will be initiated with the correct encryption
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   164
settings.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   165
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   166
.. note::
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   167
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   168
    For SSL or TLS encryption to work your PHP installation must have
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   169
    appropriate OpenSSL transports wrappers. You can check if "tls" and/or
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   170
    "ssl" are present in your PHP installation by using the PHP function
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   171
    ``stream_get_transports()``
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   172
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   173
    .. code-block:: php
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   174
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   175
        require_once 'lib/swift_required.php';
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   176
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   177
        //Create the Transport
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   178
        $transport = Swift_SmtpTransport::newInstance('smtp.example.org', 587, 'ssl');
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   179
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   180
        //Create the Mailer using your created Transport
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   181
        $mailer = Swift_Mailer::newInstance($transport);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   182
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   183
        /*
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   184
        It's also possible to use multiple method calls
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   185
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   186
        $transport = Swift_SmtpTransport::newInstance()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   187
          ->setHost('smtp.example.org')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   188
          ->setPort(587)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   189
          ->setEncryption('ssl')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   190
          ;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   191
        */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   192
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   193
SMTP with a Username and Password
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   194
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   195
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   196
Some servers require authentication. You can provide a username and password
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   197
with ``setUsername()`` and ``setPassword()``.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   198
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   199
To use a username and password with the SMTP Transport:
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   200
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   201
* Create the Transport with ``Swift_SmtpTransport::newInstance()``.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   202
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   203
* Call the ``setUsername()`` and ``setPassword()`` methods on the Transport.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   204
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   205
Your username and password will be used to authenticate upon first connect
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   206
when ``send()`` are first used on the Mailer.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   207
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   208
If authentication fails, an Exception of type
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   209
``Swift_Transport_TransportException`` will be thrown.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   210
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   211
.. note::
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   212
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   213
    If you need to know early whether or not authentication has failed and an
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   214
    Exception is going to be thrown, call the ``start()`` method on the
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   215
    created Transport.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   216
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   217
    .. code-block:: php
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   218
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   219
        require_once 'lib/swift_required.php';
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   220
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   221
        //Create the Transport the call setUsername() and setPassword()
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   222
        $transport = Swift_SmtpTransport::newInstance('smtp.example.org', 25)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   223
          ->setUsername('username')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   224
          ->setPassword('password')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   225
          ;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   226
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   227
        //Create the Mailer using your created Transport
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   228
        $mailer = Swift_Mailer::newInstance($transport);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   229
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   230
The Sendmail Transport
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   231
......................
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   232
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   233
The Sendmail Transport sends messages by communicating with a locally
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   234
installed MTA -- such as ``sendmail``.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   235
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   236
The Sendmail Transport, ``Swift_SendmailTransport`` does not
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   237
directly connect to any remote services. It is designed for Linux servers that
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   238
have ``sendmail`` installed. The Transport starts a local
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   239
``sendmail`` process and sends messages to it. Usually the
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   240
``sendmail`` process will respond quickly as it spools your
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   241
messages to disk before sending them.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   242
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   243
The Transport is named the Sendmail Transport for historical reasons
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   244
(``sendmail`` was the "standard" UNIX tool for sending e-mail
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   245
for years). It will send messages using other transfer agents such as Exim or
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   246
Postfix despite its name, provided they have the relevant sendmail wrappers so
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   247
that they can be started with the correct command-line flags.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   248
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   249
It's a common misconception that because the Sendmail Transport returns a
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   250
result very quickly it must therefore deliver messages to recipients quickly
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   251
-- this is not true. It's not slow by any means, but it's certainly not
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   252
faster than SMTP when it comes to getting messages to the intended recipients.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   253
This is because sendmail itself sends the messages over SMTP once they have
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   254
been quickly spooled to disk.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   255
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   256
The Sendmail Transport has the potential to be just as smart of the SMTP
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   257
Transport when it comes to notifying Swift Mailer about which recipients were
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   258
rejected, but in reality the majority of locally installed
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   259
``sendmail`` instances are not configured well enough to
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   260
provide any useful feedback. As such Swift Mailer may report successful
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   261
deliveries where they did in fact fail before they even left your server.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   262
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   263
You can run the Sendmail Transport in two different modes specified by command
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   264
line flags:
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   265
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   266
* "``-bs``" runs in SMTP mode so theoretically it will act like the SMTP
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   267
  Transport
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   268
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   269
* "``-t``" runs in piped mode with no feedback, but theoretically faster,
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   270
  though not advised
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   271
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   272
You can think of the Sendmail Transport as a sort of asynchronous SMTP
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   273
Transport -- though if you have problems with delivery failures you
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   274
should try using the SMTP Transport instead. Swift Mailer isn't doing the work
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   275
here, it's simply passing the work to somebody else (i.e.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   276
``sendmail``).
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   277
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   278
Using the Sendmail Transport
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   279
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   280
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   281
To use the Sendmail Transport you simply need to call
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   282
``Swift_SendmailTransport::newInstance()`` with the command as a
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   283
parameter.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   284
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   285
To use the Sendmail Transport you need to know where
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   286
``sendmail`` or another MTA exists on the server. Swift Mailer
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   287
uses a default value of ``/usr/sbin/sendmail``, which should
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   288
work on most systems.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   289
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   290
You specify the entire command as a parameter (i.e. including the command line
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   291
flags). Swift Mailer supports operational modes of "``-bs``"
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   292
(default) and "``-t``".
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   293
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   294
.. note::
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   295
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   296
    If you run sendmail in "``-t``" mode you will get no feedback as to
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   297
    whether or not sending has succeeded. Use "``-bs``" unless you have a
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   298
    reason not to.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   299
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   300
To use the Sendmail Transport:
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   301
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   302
* Call ``Swift_SendmailTransport::newInstance()`` with the command, including
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   303
  the correct command line flags. The default is to use ``/usr/sbin/sendmail
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   304
  -bs`` if this is not specified.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   305
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   306
* Use the returned object to create the Mailer.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   307
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   308
A sendmail process will be started upon the first call to ``send()``. If the
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   309
process cannot be started successfully an Exception of type
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   310
``Swift_Transport_TransportException`` will be thrown.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   311
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   312
.. code-block:: php
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   313
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   314
    require_once 'lib/swift_required.php';
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   315
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   316
    //Create the Transport
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   317
    $transport = Swift_SendmailTransport::newInstance('/usr/sbin/exim -bs');
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   318
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   319
    //Create the Mailer using your created Transport
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   320
    $mailer = Swift_Mailer::newInstance($transport);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   321
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   322
The Mail Transport
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   323
..................
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   324
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   325
The Mail Transport sends messages by delegating to PHP's internal
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   326
``mail()`` function.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   327
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   328
In my experience -- and others' -- the ``mail()``
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   329
function is not particularly predictable, or helpful.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   330
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   331
Quite notably, the ``mail()`` function behaves entirely
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   332
differently between Linux and Windows servers. On linux it uses
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   333
``sendmail``, but on Windows it uses SMTP.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   334
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   335
In order for the ``mail()`` function to even work at all
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   336
``php.ini`` needs to be configured correctly, specifying the
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   337
location of sendmail or of an SMTP server.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   338
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   339
The problem with ``mail()`` is that it "tries" to simplify things
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   340
to the point that it actually makes things more complex due to poor interface
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   341
design. The developers of Swift Mailer have gone to a lot of effort to make
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   342
the Mail Transport work with a reasonable degree of consistency.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   343
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   344
Serious drawbacks when using this Transport are:
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   345
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   346
* Unpredictable message headers
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   347
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   348
* Lack of feedback regarding delivery failures
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   349
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   350
* Lack of support for several plugins that require real-time delivery feedback
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   351
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   352
It's a last resort, and we say that with a passion!
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   353
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   354
Using the Mail Transport
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   355
^^^^^^^^^^^^^^^^^^^^^^^^
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   356
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   357
To use the Mail Transport you simply need to call
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   358
``Swift_MailTransport::newInstance()``. It's unlikely you'll need
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   359
to configure the Transport.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   360
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   361
To use the Mail Transport:
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   362
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   363
* Call ``Swift_MailTransport::newInstance()``.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   364
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   365
* Use the returned object to create the Mailer.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   366
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   367
Messages will be sent using the ``mail()`` function.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   368
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   369
.. note::
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   370
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   371
    The ``mail()`` function can take a ``$additional_parameters`` parameter.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   372
    Swift Mailer sets this to "``-f%s``" by default, where the "%s" is
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   373
    substituted with the address of the sender (via a ``sprintf()``) at send
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   374
    time. You may override this default by passing an argument to
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   375
    ``newInstance()``.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   376
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   377
    .. code-block:: php
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   378
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   379
        require_once 'lib/swift_required.php';
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   380
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   381
        //Create the Transport
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   382
        $transport = Swift_MailTransport::newInstance();
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   383
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   384
        //Create the Mailer using your created Transport
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   385
        $mailer = Swift_Mailer::newInstance($transport);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   386
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   387
Available Methods for Sending Messages
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   388
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   389
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   390
The Mailer class offers two methods for sending Messages -- ``send()``.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   391
Each behaves in a slightly different way.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   392
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   393
When a message is sent in Swift Mailer, the Mailer class communicates with
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   394
whichever Transport class you have chosen to use.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   395
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   396
Each recipient in the message should either be accepted or rejected by the
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   397
Transport. For example, if the domain name on the email address is not
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   398
reachable the SMTP Transport may reject the address because it cannot process
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   399
it. Whichever method you use -- ``send()`` -- Swift Mailer will return
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   400
an integer indicating the number of accepted recipients.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   401
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   402
.. note::
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   403
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   404
    It's possible to find out which recipients were rejected -- we'll
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   405
    cover that later in this chapter.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   406
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   407
Using the ``send()`` Method
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   408
...........................
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   409
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   410
The ``send()`` method of the ``Swift_Mailer`` class
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   411
sends a message using exactly the same logic as your Desktop mail client would
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   412
use. Just pass it a Messgae and get a result.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   413
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   414
To send a Message with ``send()``:
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   415
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   416
* Create a Transport from one of the provided Transports --
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   417
  ``Swift_SmtpTransport``, ``Swift_SendmailTransport``,
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   418
  ``Swift_MailTransport`` or one of the aggregate Transports.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   419
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   420
* Create an instance of the ``Swift_Mailer`` class, using the Transport as
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   421
  it's constructor parameter.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   422
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   423
* Create a Message.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   424
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   425
* Send the message via the ``send()`` method on the Mailer object.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   426
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   427
The message will be sent just like it would be sent if you used your mail
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   428
client. An integer is returned which includes the number of successful
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   429
recipients. If none of the recipients could be sent to then zero will be
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   430
returned, which equates to a boolean ``false``. If you set two
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   431
``To:`` recipients and three ``Bcc:`` recipients in
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   432
the message and all of the recipients are delivered to successfully then the
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   433
value 5 will be returned.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   434
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   435
.. code-block:: php
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   436
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   437
    require_once 'lib/swift_required.php';
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   438
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   439
    //Create the Transport
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   440
    $transport = Swift_SmtpTransport::newInstance('localhost', 25);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   441
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   442
    //Create the Mailer using your created Transport
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   443
    $mailer = Swift_Mailer::newInstance($transport);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   444
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   445
    //Create a message
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   446
    $message = Swift_Message::newInstance('Wonderful Subject')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   447
      ->setFrom(array('john@doe.com' => 'John Doe'))
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   448
      ->setTo(array('receiver@domain.org', 'other@domain.org' => 'A name'))
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   449
      ->setBody('Here is the message itself')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   450
      ;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   451
  
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   452
    //Send the message
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   453
    $numSent = $mailer->send($message);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   454
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   455
    printf("Sent %d messages\n", $numSent);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   456
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   457
    /* Note that often that only the boolean equivalent of the
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   458
       return value is of concern (zero indicates FALSE)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   459
   
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   460
    if ($mailer->send($message))
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   461
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   462
      echo "Sent\n";
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   463
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   464
    else
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   465
    {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   466
      echo "Failed\n";
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   467
    }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   468
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   469
    */
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   470
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   471
Sending Emails in Batch
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   472
.......................
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   473
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   474
If you want to send a separate message to each recipient so that only their
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   475
own address shows up in the ``To:`` field, follow the following recipe:
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   476
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   477
* Create a Transport from one of the provided Transports --
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   478
  ``Swift_SmtpTransport``, ``Swift_SendmailTransport``,
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   479
  ``Swift_MailTransport`` or one of the aggregate Transports.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   480
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   481
* Create an instance of the ``Swift_Mailer`` class, using the Transport as
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   482
  it's constructor parameter.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   483
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   484
* Create a Message.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   485
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   486
* Iterate over the recipients and send message via the ``send()`` method on
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   487
  the Mailer object.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   488
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   489
Each recipient of the messages receives a different copy with only their own
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   490
email address on the ``To:`` field.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   491
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   492
.. note::
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   493
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   494
    In the following example, two emails are sent. One to each of
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   495
    ``receiver@domain.org`` and ``other@domain.org``. These recipients will
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   496
    not be aware of each other.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   497
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   498
    .. code-block:: php
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   499
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   500
        require_once 'lib/swift_required.php';
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   501
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   502
        //Create the Transport
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   503
        $transport = Swift_SmtpTransport::newInstance('localhost', 25);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   504
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   505
        //Create the Mailer using your created Transport
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   506
        $mailer = Swift_Mailer::newInstance($transport);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   507
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   508
        //Create a message
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   509
        $message = Swift_Message::newInstance('Wonderful Subject')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   510
          ->setFrom(array('john@doe.com' => 'John Doe'))
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   511
          ->setBody('Here is the message itself')
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   512
          ;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   513
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   514
        //Send the message
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   515
        $failedRecipients = array();
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   516
        $numSent = 0;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   517
        $to = array('receiver@domain.org', 'other@domain.org' => 'A name');
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   518
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   519
        foreach ($to as $address => $name)
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   520
        {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   521
          $message->setTo(array($address => $name));
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   522
          $numSent += $this->send($message, $failedRecipients);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   523
        }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   524
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   525
        printf("Sent %d messages\n", $numSent);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   526
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   527
Finding out Rejected Addresses
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   528
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   529
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   530
It's possible to get a list of addresses that were rejected by the Transport
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   531
by using a by-reference parameter to ``send()``.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   532
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   533
As Swift Mailer attempts to send the message to each address given to it, if a
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   534
recipient is rejected it will be added to the array. You can pass an existing
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   535
array, otherwise one will be created by-reference.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   536
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   537
Collecting the list of recipients that were rejected can be useful in
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   538
circumstances where you need to "prune" a mailing list for example when some
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   539
addresses cannot be delivered to.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   540
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   541
Getting Failures By-reference
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   542
.............................
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   543
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   544
Collecting delivery failures by-reference with the ``send()`` method is as
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   545
simple as passing a variable name to the method call.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   546
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   547
To get failed recipients by-reference:
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   548
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   549
* Pass a by-reference variable name to the ``send()`` method of the Mailer
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   550
  class.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   551
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   552
If the Transport rejects any of the recipients, the culprit addresses will be
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   553
added to the array provided by-reference.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   554
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   555
.. note::
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   556
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   557
    If the variable name does not yet exist, it will be initialized as an
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   558
    empty array and then failures will be added to that array. If the variable
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   559
    already exists it will be type-cast to an array and failures will be added
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   560
    to it.
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   561
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   562
    .. code-block:: php
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   563
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   564
        $mailer = Swift_Mailer::newInstance( ... );
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   565
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   566
        $message = Swift_Message::newInstance( ... )
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   567
          ->setFrom( ... )
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   568
          ->setTo(array(
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   569
            'receiver@bad-domain.org' => 'Receiver Name',
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   570
            'other@domain.org' => 'A name',
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   571
            'other-receiver@bad-domain.org' => 'Other Name'
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   572
          ))
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   573
          ->setBody( ... )
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   574
          ;
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   575
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   576
        //Pass a variable name to the send() method
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   577
        if (!$mailer->send($message, $failures))
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   578
        {
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   579
          echo "Failures:";
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   580
          print_r($failures);
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   581
        }
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   582
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   583
        /*
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   584
        Failures:
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   585
        Array (
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   586
          0 => receiver@bad-domain.org,
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   587
          1 => other-receiver@bad-domain.org
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   588
        )
7f95f8617b0b first commit
ymh <ymh.work@gmail.com>
parents:
diff changeset
   589
        */