magallanes/Mage/Mailer.php
Andrés Montañez a0f4920333 PSR-2 Fixer
2015-04-12 16:13:06 -03:00

89 lines
2.5 KiB
PHP

<?php
/*
* This file is part of the Magallanes package.
*
* (c) Andrés Montañez <andres@andresmontanez.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Mage;
/**
* Mailer Helper.
*
* @author Andrés Montañez <andres@andresmontanez.com>
*/
class Mailer
{
const EOL = "\r\n";
const SUBJECT = '[Magallanes] Deployment of {project} to {environment}: {result}';
protected $address;
protected $project;
protected $environment;
protected $logFile;
public function setAddress($address)
{
$this->address = $address;
return $this;
}
public function setProject($project)
{
$this->project = $project;
return $this;
}
public function setEnvironment($environment)
{
$this->environment = $environment;
return $this;
}
public function setLogFile($logFile)
{
$this->logFile = $logFile;
return $this;
}
public function send($result)
{
$boundary = md5(date('r', time()));
$headers = 'From: ' . $this->address
. self::EOL
. 'Reply-To: ' . $this->address
. self::EOL
. 'MIME-Version: 1.0'
. self::EOL
. 'Content-Type: multipart/mixed; boundary=Mage-mixed-' . $boundary;
$subject = str_replace(
array('{project}', '{environment}', '{result}'),
array($this->project, $this->environment, $result ? 'SUCCESS' : 'FAILURE'),
self::SUBJECT
);
$attachment = chunk_split(base64_encode(file_get_contents($this->logFile)));
$message = 'This is a multi-part message in MIME format.' . self::EOL
. '--Mage-mixed-' . $boundary . self::EOL
. 'Content-Type: text/plain; charset=iso-8859-1' . self::EOL
. 'Content-Transfer-Encoding: quoted-printable' . self::EOL
. self::EOL
. strip_tags(Console::getOutput()) . self::EOL
. self::EOL
. '--Mage-mixed-' . $boundary . self::EOL
. 'Content-Type: text/plain; name="log.txt"' . self::EOL
. 'Content-Transfer-Encoding: base64' . self::EOL
. 'Content-Disposition: attachment' . self::EOL
. self::EOL
. $attachment . self::EOL
. '--Mage-mixed-' . $boundary . '--' . self::EOL;
mail($this->address, $subject, $message, $headers);
}
}