1<?php 2// (c) Copyright by authors of the Tiki Wiki CMS Groupware Project 3// 4// All Rights Reserved. See copyright.txt for details and a complete list of authors. 5// Licensed under the GNU LESSER GENERAL PUBLIC LICENSE. See license.txt for details. 6// $Id$ 7 8class OpenPGP_Zend_Mail_Transport_Smtp extends Zend\Mail\Transport\Sendmail 9{ 10 /** 11 * Prepare header string from message 12 * 13 * @param Message $message 14 * @return string 15 */ 16 protected function prepareHeaders(Zend\Mail\Message $message) 17 { 18 $originalSubject = ''; 19 20 $headers = $message->getHeaders(); 21 if ($headers->has('Subject')) { 22 $subjectHeader = $headers->get('Subject'); 23 $originalSubject = $subjectHeader->getFieldValue(); 24 } 25 26 $body = $message->getBody(); 27 if ($body instanceof Zend\Mime\Message) { 28 $parts = $body->getParts(); 29 foreach ($parts as $part) { 30 /* @var $part Zend\Mime\Part */ 31 if ($part->getType() == Zend\Mime\Mime::TYPE_HTML) { 32 $part->setContent("******** PGP/MIME-ENCRYPTED MESSAGE ********<br>\n" 33 . "Subject: " 34 . $originalSubject 35 . "<br><br>\n" 36 . $part->getContent()); 37 } 38 if ($part->getType() == Zend\Mime\Mime::TYPE_TEXT) { 39 $part->setContent("******** PGP/MIME-ENCRYPTED MESSAGE ********\n" 40 . "Subject: " 41 . $originalSubject 42 . "\n\n" 43 . $part->getContent()); 44 } 45 } 46 } else { 47 $message->setBody("******** PGP/MIME-ENCRYPTED MESSAGE ********\n" 48 . "Subject: " 49 . $originalSubject 50 . "\n\n" 51 . $body); 52 } 53 54 $originalHeaders = parent::prepareHeaders($message); 55 $originalBody = parent::prepareBody($message); 56 57 $recipients = []; 58 foreach ($message->getTo() as $destination) { 59 $recipients[] = $destination->getEmail(); 60 } 61 foreach ($message->getCc() as $destination) { 62 $recipients[] = $destination->getEmail(); 63 } 64 foreach ($message->getBcc() as $destination) { 65 $recipients[] = $destination->getEmail(); 66 } 67 68 global $openpgplib; 69 $pgpmime_msg = $openpgplib->prepareEncryptWithZendMail($originalHeaders, $originalBody, $recipients); 70 $headers = $pgpmime_msg[0]; // set pgp/mime headers from result array 71 $this->OpenGPGStoreMailBody = $pgpmime_msg[1]; // set pgp/mime encrypted message body from result array 72 73 return $headers; 74 } 75 76 /** 77 * Prepare body string from message 78 * 79 * @param Message $message 80 * @return string 81 */ 82 protected function prepareBody(Zend\Mail\Message $message) 83 { 84 return $this->OpenGPGStoreMailBody; 85 } 86} 87