summaryrefslogtreecommitdiff
path: root/Postman/Postman-Mail/PostmanGmailApiModuleZendMailTransport.php
diff options
context:
space:
mode:
Diffstat (limited to 'Postman/Postman-Mail/PostmanGmailApiModuleZendMailTransport.php')
-rw-r--r--Postman/Postman-Mail/PostmanGmailApiModuleZendMailTransport.php278
1 files changed, 0 insertions, 278 deletions
diff --git a/Postman/Postman-Mail/PostmanGmailApiModuleZendMailTransport.php b/Postman/Postman-Mail/PostmanGmailApiModuleZendMailTransport.php
deleted file mode 100644
index b190772..0000000
--- a/Postman/Postman-Mail/PostmanGmailApiModuleZendMailTransport.php
+++ /dev/null
@@ -1,278 +0,0 @@
-<?php
-if ( ! defined( 'ABSPATH' ) ) {
- exit; // Exit if accessed directly
-}
-
-/**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category Zend
- * @package Postman_Zend_Mail
- * @subpackage Transport
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license http://framework.zend.com/license/new-bsd New BSD License
- * @version $Id$
- */
-
-/**
- *
- * @see Postman_Zend_Mime
- */
-// require_once 'Zend/Mime.php';
-
-/**
- *
- * @see Postman_Zend_Mail_Protocol_Smtp
- */
-// require_once 'Zend/Mail/Protocol/Smtp.php';
-
-/**
- *
- * @see Postman_Zend_Mail_Transport_Abstract
- */
-// require_once 'Zend/Mail/Transport/Abstract.php';
-
-/**
- * SMTP connection object
- *
- * Loads an instance of Postman_Zend_Mail_Protocol_Smtp and forwards smtp transactions
- *
- * @category Zend
- * @package Postman_Zend_Mail
- * @subpackage Transport
- * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com)
- * @license http://framework.zend.com/license/new-bsd New BSD License
- */
-if (! class_exists ( 'PostmanGmailApiModuleZendMailTransport' )) {
- class PostmanGmailApiModuleZendMailTransport extends Postman_Zend_Mail_Transport_Abstract {
- const SERVICE_OPTION = 'service';
- const MESSAGE_SENDER_EMAIL_OPTION = 'sender_email';
- private $logger;
- private $message;
- private $transcript;
-
- /**
- * EOL character string used by transport
- *
- * @var string
- * @access public
- */
- public $EOL = "\n";
-
- /**
- * Remote smtp hostname or i.p.
- *
- * @var string
- */
- protected $_host;
-
- /**
- * Port number
- *
- * @var integer|null
- */
- protected $_port;
-
- /**
- * Local client hostname or i.p.
- *
- * @var string
- */
- protected $_name = 'localhost';
-
- /**
- * Authentication type OPTIONAL
- *
- * @var string
- */
- protected $_auth;
-
- /**
- * Config options for authentication
- *
- * @var array
- */
- protected $_config;
-
- /**
- * Instance of Postman_Zend_Mail_Protocol_Smtp
- *
- * @var Postman_Zend_Mail_Protocol_Smtp
- */
- protected $_connection;
-
- /**
- * Constructor.
- *
- * @param string $host
- * OPTIONAL (Default: 127.0.0.1)
- * @param array $config
- * OPTIONAL (Default: null)
- * @return void
- *
- * @todo Someone please make this compatible
- * with the SendMail transport class.
- */
- public function __construct($host = '127.0.0.1', Array $config = array()) {
- if (isset ( $config ['name'] )) {
- $this->_name = $config ['name'];
- }
- if (isset ( $config ['port'] )) {
- $this->_port = $config ['port'];
- }
- if (isset ( $config ['auth'] )) {
- $this->_auth = $config ['auth'];
- }
-
- $this->_host = $host;
- $this->_config = $config;
- $this->logger = new PostmanLogger ( get_class ( $this ) );
- }
-
- /**
- * Class destructor to ensure all open connections are closed
- *
- * @return void
- */
- public function __destruct() {
- if ($this->_connection instanceof Postman_Zend_Mail_Protocol_Smtp) {
- try {
- $this->_connection->quit ();
- } catch ( Postman_Zend_Mail_Protocol_Exception $e ) {
- // ignore
- }
- $this->_connection->disconnect ();
- }
- }
-
- /**
- * Sets the connection protocol instance
- *
- * @param Postman_Zend_Mail_Protocol_Abstract $client
- *
- * @return void
- */
- public function setConnection(Postman_Zend_Mail_Protocol_Abstract $connection) {
- $this->_connection = $connection;
- }
-
- /**
- * Gets the connection protocol instance
- *
- * @return Postman_Zend_Mail_Protocol_Abstract|null
- */
- public function getConnection() {
- return $this->_connection;
- }
-
- /**
- * Send an email via the Gmail API
- *
- * Uses URI https://www.googleapis.com
- *
- *
- * @return void
- * @todo Rename this to sendMail, it's a public method...
- */
- public function _sendMail() {
-
- // Prepare the message in message/rfc822
- $message = $this->header . Postman_Zend_Mime::LINEEND . $this->body;
- $this->message = $message;
-
- // The message needs to be encoded in Base64URL
- $encodedMessage = rtrim ( strtr ( base64_encode ( $message ), '+/', '-_' ), '=' );
- $googleApiMessage = new Google_Service_Gmail_Message ();
- $googleService = $this->_config [self::SERVICE_OPTION];
- $googleClient = $googleService->getClient();
-
- $file_size = strlen($message);
-
- $result = array ();
- try {
- $googleClient->setDefer(true);
- $result = $googleService->users_messages->send ( 'me', $googleApiMessage, array('uploadType' => 'resumable') );
-
- $chunkSizeBytes = 1 * 1024 * 1024;
-
- // create mediafile upload
- $media = new Google_Http_MediaFileUpload(
- $googleClient,
- $result,
- 'message/rfc822',
- $message,
- true,
- $chunkSizeBytes
- );
- $media->setFileSize($file_size);
-
- $status = false;
- while (! $status) {
- $status = $media->nextChunk();
- }
- $result = false;
-
- // Reset to the client to execute requests immediately in the future.
- $googleClient->setDefer(false);
-
- $googleMessageId = $status->getId();
-
- if ($this->logger->isInfo ()) {
- $this->logger->info ( sprintf ( 'Message %d accepted for delivery', PostmanState::getInstance ()->getSuccessfulDeliveries () + 1 ) );
- }
- $this->transcript = print_r ( $result, true );
- $this->transcript .= PostmanModuleTransport::RAW_MESSAGE_FOLLOWS;
- $this->transcript .= $message;
- } catch ( Exception $e ) {
- $this->transcript = $e->getMessage ();
- $this->transcript .= PostmanModuleTransport::RAW_MESSAGE_FOLLOWS;
- $this->transcript .= $message;
- throw $e;
- }
- }
-
- public function getMessage() {
- return $this->message;
- }
- public function getTranscript() {
- return $this->transcript;
- }
-
- /**
- * Format and fix headers
- *
- * Some SMTP servers do not strip BCC headers. Most clients do it themselves as do we.
- *
- * @access protected
- * @param array $headers
- * @return void
- * @throws Postman_Zend_Transport_Exception
- */
- protected function _prepareHeaders($headers) {
- if (! $this->_mail) {
- /**
- *
- * @see Postman_Zend_Mail_Transport_Exception
- */
- // require_once 'Zend/Mail/Transport/Exception.php';
- throw new Postman_Zend_Mail_Transport_Exception ( '_prepareHeaders requires a registered Postman_Zend_Mail object' );
- }
-
- // google will unset the Bcc header for us.
- // unset ( $headers ['Bcc'] );
-
- // Prepare headers
- parent::_prepareHeaders ( $headers );
- }
- }
-} \ No newline at end of file