dev-master
9999999-dev https://github.com/maurymmarques/postmark-cakephpA CakePHP plugin that makes email delivery using Postmark
MIT
The Requires
- php >=5.3.0
- composer/installers *
by Maury M. Marques
plugin cakephp postmark
Wallogit.com
2017 © Pedro Peláez
A CakePHP plugin that makes email delivery using Postmark
CakePHP plugin that makes email delivery using Postmark, (*1)
Written for CakePHP 2.x, (*2)
Copyright (c) 2011 Maury M. Marques, (*3)
You can install this plugin using Composer, GIT Submodule, GIT Clone or Manually, (*4)
[Using Composer], (*5)
Add the plugin to your project's composer.json - something like this:, (*6)
{
"require": {
"maurymmarques/postmark-plugin": "dev-master"
},
"extra": {
"installer-paths": {
"app/Plugin/Postmark": ["maurymmarques/postmark-plugin"]
}
}
}
Then just run composer install, (*7)
Because this plugin has the type cakephp-plugin set in it's own composer.json, composer knows to install it inside your /Plugin directory, rather than in the usual vendors file., (*8)
[GIT Submodule], (*9)
In your app directory (app/Plugin) type:, (*10)
git submodule add git://github.com/maurymmarques/postmark-cakephp.git Plugin/Postmark git submodule init git submodule update
[GIT Clone], (*11)
In your plugin directory (app/Plugin or plugins) type:, (*12)
git clone https://github.com/maurymmarques/postmark-cakephp.git Postmark
[Manual], (*13)
Postmark
app/Plugin/ or plugins
Bootstrap the plugin in app/Config/bootstrap.php:, (*14)
CakePlugin::load('Postmark');
Create the file app/Config/email.php with the class EmailConfig., (*15)
class EmailConfig {
public $postmark = array(
'transport' => 'Postmark.Postmark',
'uri' => 'http://api.postmarkapp.com/email',
'key' => 'your-postmark-key',
'track_opens' => true
);
}
If you want your connection to Postmark to be encrypted, simply change the uri to use https., (*16)
You can set track_opens to false or remove it from the config array if you don't want Postmark to track emails.
Read more about Open Tracking., (*17)
Note: Make sure to modified the API key to match the credentials for your Postmark server rack instance., (*18)
You can also configure a proxy in the file app/Config/email.php:, (*19)
class EmailConfig {
public $postmark = array(
'transport' => 'Postmark.Postmark',
'uri' => 'http://api.postmarkapp.com/email',
'key' => 'your-postmark-key',
'track_opens' => true,
'proxy' => array(
'host' => 'your-proxy-host', # Can be an array with settings to authentication class
'port' => 3128, # Default 3128
'method' => null, # Proxy method (ie, Basic, Digest). If empty, disable proxy authentication
'user' => null, # Username if your proxy need authentication
'pass' => null # Password to proxy authentication
),
);
}
Read more about HttpSocket Parameters., (*20)
This plugin uses CakeEmail, and works virtually the same., (*21)
Then, simply send messages like this:, (*22)
App::uses('CakeEmail', 'Network/Email');
$email = new CakeEmail();
$email->config('postmark');
$email->from('yourpostmark@mail.com');
$email->to('recipient@domain.com');
$email->subject('Test Postmark');
$email->send('Message');
Or use more resources:, (*23)
App::uses('CakeEmail', 'Network/Email');
$email = new CakeEmail();
$email->config('postmark');
$email->template('default', 'default');
$email->emailFormat('html');
$email->viewVars(array('name' => 'Your Name'));
$email->from(array('yourpostmark@mail.com' => 'Your Name'));
$email->to(array('recipient1@domain.com' => 'Recipient1', 'recipient2@domain.com' => 'Recipient2'));
$email->cc(array('recipient3@domain.com' => 'Recipient3', 'recipient4@domain.com' => 'Recipient4'));
$email->bcc(array('recipient5@domain.com' => 'Recipient5', 'recipient6@domain.com' => 'Recipient6'));
$email->subject('Test Postmark');
$email->addHeaders(array('Tag' => 'my tag'));
$email->attachments(array(
'cake.icon.png' => array(
'file' => WWW_ROOT . 'img' . DS . 'cake.icon.png'
)
));
$email->send();
If you need the instance of the class PostmarkTrasport:, (*24)
App::uses('CakeEmail', 'Network/Email');
$email = new CakeEmail();
$postmarkInstance = $email->transport('Postmark.Postmark')->transportClass();
The syntax of all parameters is the same as the default CakeEmail:, (*25)
http://book.cakephp.org/2.0/en/core-utility-libraries/email.html, (*26)
For more information, see the Postmark API documentation:, (*27)
http://developer.postmarkapp.com/#message-format, (*28)
You can see the response from Postmark in the return value when you send a message:, (*29)
$result = $email->send('Message');
$this->log($result, 'debug');
If there are any errors, they'll be included in the response. See the Postmark API documentation for error code detail:, (*30)
http://developer.postmarkapp.com/#api-error-codes, (*31)
This class does not work for CakePHP 1.3, for this see:, (*32)
https://github.com/danielmcormond/postmark-cakephp, (*33)
A CakePHP plugin that makes email delivery using Postmark
MIT
plugin cakephp postmark