mirror of
				https://github.com/hauke68/Magallanes.git
				synced 2025-11-04 09:00:18 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			92 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			2.4 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;
 | 
						|
 | 
						|
use Mage\Console;
 | 
						|
 | 
						|
/**
 | 
						|
 * 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);
 | 
						|
    }
 | 
						|
} |