Recently I wrote a class for ZF that one can use as a convenient tool for signing and/or encrypting email documents. The tricky thing was that MS Outlook Express did not want to treat it as Signed and Encrypted message unless you add “\n” to the end of the message , that was hard to find and I had to only experiment as there are almost no good sources in the Internet about this problem. The issue is reported here: https://ua.php.net/manual/en/function.op … .php#36038
except that instead of beginning of a message I should have placed it at the end. Here is the example usage of the class:
<?php ini_set('include_path',ini_get('include_path').PATH_SEPARATOR.realpath('./')); require_once('Zend/Loader/Autoloader.php'); $loader = Zend_Loader_Autoloader::getInstance(); $mail = new Zend_Mail(); $text = <<<EOD <html> <body> <table> <tr> <td>Column1</td> <td>Column2</td> </tr> <tr> <td>Column1</td> <td>Column2</td> </tr> </table> </body> </html> EOD; $mail->setBodyHtml($text); $mail->setFrom('email@example.com', 'Anyone'); $mail->addTo('firstname.lastname@example.org', 'Anyone'); $mail->setSubject('Test Subject'); $mail->createAttachment(file_get_contents('attachment.zip'), Zend_Mime::TYPE_OCTETSTREAM,Zend_Mime::DISPOSITION_ATTACHMENT, Zend_Mime::ENCODING_BASE64,'globalsign_pk.pem'); $signature = new Zend_Mail_Encryption_SMIME('globalsign_pk.pem','q1w2e3r4t5y6'); $encryption = new Zend_Mail_Encryption_SMIME('globalsign_pk.pem','q1w2e3r4t5y6'); $mail->setSignature($signature); $mail->setEncryption($encryption); $mail->send();
Tested ok with attachments, html email, in MS Outlook and Mozilla Thunderbird. Attached is the Zend_Mail_Encryption_SMIME class + patches for Zend_Mail and Zend_Mail_Transport_Abstract classes as well as the classes modified.