commit
6eec352d2d
5 changed files with 387 additions and 0 deletions
@ -0,0 +1,32 @@
|
||||
The Yii framework is free software. It is released under the terms of |
||||
the following BSD License. |
||||
|
||||
Copyright © 2008-2013 by Yii Software LLC (http://www.yiisoft.com) |
||||
All rights reserved. |
||||
|
||||
Redistribution and use in source and binary forms, with or without |
||||
modification, are permitted provided that the following conditions |
||||
are met: |
||||
|
||||
* Redistributions of source code must retain the above copyright |
||||
notice, this list of conditions and the following disclaimer. |
||||
* Redistributions in binary form must reproduce the above copyright |
||||
notice, this list of conditions and the following disclaimer in |
||||
the documentation and/or other materials provided with the |
||||
distribution. |
||||
* Neither the name of Yii Software LLC nor the names of its |
||||
contributors may be used to endorse or promote products derived |
||||
from this software without specific prior written permission. |
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
||||
FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE |
||||
COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, |
||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, |
||||
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER |
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN |
||||
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
||||
POSSIBILITY OF SUCH DAMAGE. |
@ -0,0 +1,58 @@
|
||||
Yii 2.0 Public Preview - SwiftMailer Mail Solution |
||||
================================================== |
||||
|
||||
Thank you for choosing Yii - a high-performance component-based PHP framework. |
||||
|
||||
If you are looking for a production-ready PHP framework, please use |
||||
[Yii v1.1](https://github.com/yiisoft/yii). |
||||
|
||||
Yii 2.0 is still under heavy development. We may make significant changes |
||||
without prior notices. **Yii 2.0 is not ready for production use yet.** |
||||
|
||||
[](http://travis-ci.org/yiisoft/yii2) |
||||
|
||||
This is the yii2-swiftmailer extension. |
||||
|
||||
|
||||
Installation |
||||
------------ |
||||
|
||||
The preferred way to install this extension is through [composer](http://getcomposer.org/download/). |
||||
|
||||
Either run |
||||
``` |
||||
php composer.phar require yiisoft/yii2-swiftmailer "*" |
||||
``` |
||||
|
||||
or add |
||||
```json |
||||
"yiisoft/yii2-swiftmailer": "*" |
||||
``` |
||||
to the require section of your composer.json. |
||||
|
||||
|
||||
*Note: You might have to run `php composer.phar selfupdate`* |
||||
|
||||
|
||||
Usage & Documentation |
||||
--------------------- |
||||
|
||||
This extension has to be registered prior to usage. |
||||
To enable this view renderer add it to the $rendereres property of your view object. |
||||
|
||||
Example: |
||||
|
||||
```php |
||||
<?php |
||||
// config.php |
||||
return [ |
||||
//.... |
||||
'components' => [ |
||||
'mail' => [ |
||||
'class' => 'yii\swiftmailer\Mailer', |
||||
], |
||||
], |
||||
]; |
||||
``` |
||||
|
||||
For further instructions refer to the related section in the yii guide. |
@ -0,0 +1,28 @@
|
||||
{ |
||||
"name": "yiisoft/yii2-swiftmailer", |
||||
"description": "The SwiftMailer integration for the Yii framework", |
||||
"keywords": ["yii", "swift", "swiftmailer", "mail", "email", "mailer"], |
||||
"type": "yii2-extension", |
||||
"license": "BSD-3-Clause", |
||||
"support": { |
||||
"issues": "https://github.com/yiisoft/yii2/issues?state=open", |
||||
"forum": "http://www.yiiframework.com/forum/", |
||||
"wiki": "http://www.yiiframework.com/wiki/", |
||||
"irc": "irc://irc.freenode.net/yii", |
||||
"source": "https://github.com/yiisoft/yii2" |
||||
}, |
||||
"authors": [ |
||||
{ |
||||
"name": "Paul Klimov", |
||||
"email": "klimov.paul@gmail.com" |
||||
} |
||||
], |
||||
"minimum-stability": "dev", |
||||
"require": { |
||||
"yiisoft/yii2": "*", |
||||
"swiftmailer/swiftmailer": ">=v5.0" |
||||
}, |
||||
"autoload": { |
||||
"psr-0": { "yii\\swiftmailer\\": "" } |
||||
} |
||||
} |
@ -0,0 +1,143 @@
|
||||
<?php |
||||
/** |
||||
* @link http://www.yiiframework.com/ |
||||
* @copyright Copyright (c) 2008 Yii Software LLC |
||||
* @license http://www.yiiframework.com/license/ |
||||
*/ |
||||
|
||||
namespace yii\swiftmailer; |
||||
|
||||
use yii\base\InvalidConfigException; |
||||
use yii\email\BaseMailer; |
||||
|
||||
/** |
||||
* Mailer based on SwiftMailer library. |
||||
* |
||||
* By default PHP 'mail' function will be used as default email transport. |
||||
* You can setup different email transport via [[vendorMailer]] property: |
||||
* ~~~ |
||||
* 'components' => array( |
||||
* ... |
||||
* 'email' => array( |
||||
* 'class' => 'yii\email\swift\Mailer', |
||||
* 'transport' => [ |
||||
* 'class' => 'Swift_SmtpTransport', |
||||
* 'host' => 'localhost', |
||||
* 'username' => 'username', |
||||
* 'password' => 'password', |
||||
* 'port' => '587', |
||||
* 'encryption' => 'tls', |
||||
* ], |
||||
* ), |
||||
* ... |
||||
* ), |
||||
* ~~~ |
||||
* |
||||
* @see http://swiftmailer.org |
||||
* |
||||
* @author Paul Klimov <klimov.paul@gmail.com> |
||||
* @since 2.0 |
||||
*/ |
||||
class Mailer extends BaseMailer |
||||
{ |
||||
/** |
||||
* @var \Swift_Mailer Swift mailer instance. |
||||
*/ |
||||
private $_swiftMailer; |
||||
/** |
||||
* @var \Swift_Transport|array Swift transport instance or its array configuration. |
||||
*/ |
||||
private $_transport = []; |
||||
|
||||
/** |
||||
* @return array|\Swift_Mailer Swift mailer instance or array configuration. |
||||
*/ |
||||
public function getSwiftMailer() |
||||
{ |
||||
if (!is_object($this->_swiftMailer)) { |
||||
$this->_swiftMailer = $this->createSwiftMailer(); |
||||
} |
||||
return $this->_swiftMailer; |
||||
} |
||||
|
||||
/** |
||||
* @param array|\Swift_Transport $transport |
||||
* @throws \yii\base\InvalidConfigException on invalid argument. |
||||
*/ |
||||
public function setTransport($transport) |
||||
{ |
||||
if (!is_array($transport) && !is_object($transport)) { |
||||
throw new InvalidConfigException('"' . get_class($this) . '::transport" should be either object or array, "' . gettype($transport) . '" given.'); |
||||
} |
||||
$this->_transport = $transport; |
||||
} |
||||
|
||||
/** |
||||
* @return array|\Swift_Transport |
||||
*/ |
||||
public function getTransport() |
||||
{ |
||||
if (!is_object($this->_transport)) { |
||||
$this->_transport = $this->createTransport($this->_transport); |
||||
} |
||||
return $this->_transport; |
||||
} |
||||
|
||||
/** |
||||
* @inheritdoc |
||||
*/ |
||||
public function send($message) |
||||
{ |
||||
return ($this->getSwiftMailer()->send($message->getSwiftMessage()) > 0); |
||||
} |
||||
|
||||
/** |
||||
* Creates Swift mailer instance. |
||||
* @return \Swift_Mailer mailer instance. |
||||
*/ |
||||
protected function createSwiftMailer() |
||||
{ |
||||
return \Swift_Mailer::newInstance($this->getTransport()); |
||||
} |
||||
|
||||
/** |
||||
* Creates email transport instance by its array configuration. |
||||
* @param array $config transport configuration. |
||||
* @throws \yii\base\InvalidConfigException on invalid transport configuration. |
||||
* @return \Swift_Transport transport instance. |
||||
*/ |
||||
protected function createTransport(array $config) |
||||
{ |
||||
if (array_key_exists('class', $config)) { |
||||
$className = $config['class']; |
||||
unset($config['class']); |
||||
} else { |
||||
$className = 'Swift_MailTransport'; |
||||
} |
||||
$transport = call_user_func([$className, 'newInstance']); |
||||
if (!empty($config)) { |
||||
foreach ($config as $name => $value) { |
||||
if (property_exists($transport, $name)) { |
||||
$transport->$name = $value; |
||||
} else { |
||||
$setter = 'set' . $name; |
||||
if (method_exists($transport, $setter)) { |
||||
$transport->$setter($value); |
||||
} else { |
||||
throw new InvalidConfigException('Setting unknown property: ' . get_class($transport) . '::' . $name); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
return $transport; |
||||
} |
||||
|
||||
/** |
||||
* Creates the Swift email message instance. |
||||
* @return \Swift_Message email message instance. |
||||
*/ |
||||
public function createSwiftMessage() |
||||
{ |
||||
return new \Swift_Message(); |
||||
} |
||||
} |
@ -0,0 +1,126 @@
|
||||
<?php |
||||
/** |
||||
* @link http://www.yiiframework.com/ |
||||
* @copyright Copyright (c) 2008 Yii Software LLC |
||||
* @license http://www.yiiframework.com/license/ |
||||
*/ |
||||
|
||||
namespace yii\swiftmailer; |
||||
|
||||
use yii\email\BaseMessage; |
||||
|
||||
/** |
||||
* Email message based on SwiftMailer library. |
||||
* |
||||
* @see http://swiftmailer.org/docs/messages.html |
||||
* @see \yii\swiftmailer\Mailer |
||||
* |
||||
* @method Mailer getMailer() returns mailer instance. |
||||
* @property \Swift_Message $swiftMessage vendor message instance. |
||||
* |
||||
* @author Paul Klimov <klimov.paul@gmail.com> |
||||
* @since 2.0 |
||||
*/ |
||||
class Message extends BaseMessage |
||||
{ |
||||
/** |
||||
* @var \Swift_Message Swift message instance. |
||||
*/ |
||||
private $_swiftMessage; |
||||
|
||||
/** |
||||
* @return \Swift_Message Swift message instance. |
||||
*/ |
||||
public function getSwiftMessage() |
||||
{ |
||||
if (!is_object($this->_swiftMessage)) { |
||||
$this->_swiftMessage = $this->getMailer()->createSwiftMessage(); |
||||
} |
||||
return $this->_swiftMessage; |
||||
} |
||||
|
||||
/** |
||||
* @inheritdoc |
||||
*/ |
||||
public function setFrom($from) |
||||
{ |
||||
$this->getSwiftMessage()->setFrom($from); |
||||
$this->getSwiftMessage()->setReplyTo($from); |
||||
} |
||||
|
||||
/** |
||||
* @inheritdoc |
||||
*/ |
||||
public function setTo($to) |
||||
{ |
||||
$this->getSwiftMessage()->setTo($to); |
||||
} |
||||
|
||||
/** |
||||
* @inheritdoc |
||||
*/ |
||||
public function setCc($cc) |
||||
{ |
||||
$this->getSwiftMessage()->setCc($cc); |
||||
} |
||||
|
||||
/** |
||||
* @inheritdoc |
||||
*/ |
||||
public function setBcc($bcc) |
||||
{ |
||||
$this->getSwiftMessage()->setBcc($bcc); |
||||
} |
||||
|
||||
/** |
||||
* @inheritdoc |
||||
*/ |
||||
public function setSubject($subject) |
||||
{ |
||||
$this->getSwiftMessage()->setSubject($subject); |
||||
} |
||||
|
||||
/** |
||||
* @inheritdoc |
||||
*/ |
||||
public function setText($text) |
||||
{ |
||||
$this->getSwiftMessage()->setBody($text, 'text/plain'); |
||||
} |
||||
|
||||
/** |
||||
* @inheritdoc |
||||
*/ |
||||
public function setHtml($html) |
||||
{ |
||||
$this->getSwiftMessage()->setBody($html, 'text/html'); |
||||
} |
||||
|
||||
/** |
||||
* @inheritdoc |
||||
*/ |
||||
public function addText($text) |
||||
{ |
||||
$this->getSwiftMessage()->addPart($text, 'text/plain'); |
||||
} |
||||
|
||||
/** |
||||
* @inheritdoc |
||||
*/ |
||||
public function addHtml($html) |
||||
{ |
||||
$this->getSwiftMessage()->addPart($html, 'text/html'); |
||||
} |
||||
|
||||
/** |
||||
* @inheritdoc |
||||
*/ |
||||
public function createAttachment($content, $fileName, $contentType = 'application/octet-stream') |
||||
{ |
||||
if (empty($contentType)) { |
||||
$contentType = 'application/octet-stream'; |
||||
} |
||||
$attachment = \Swift_Attachment::newInstance($content, $fileName, $contentType); |
||||
$this->getSwiftMessage()->attach($attachment); |
||||
} |
||||
} |
Loading…
Reference in new issue