Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Swift Mailer Update

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

Swift Mailer Update

Avatar for Norio Suzuki

Norio Suzuki

July 16, 2016
Tweet

More Decks by Norio Suzuki

Other Decks in Technology

Transcript

  1. v5.2.1 (2014-06-13) * SECURITY FIX: fixed CLI escaping when using

    sendmail as a transport Prior to 5.2.1, the sendmail transport (Swift_Transport_SendmailTransport) was vulnerable to an arbitrary shell execution if the "From" header came from a non-trusted source and no "Return-Path" is configured. * fixed parameter in DKIMSigner * fixed compatibility with PHP < 5.4
  2. v5.2.2 (2014-09-20) * fixed Japanese support * fixed the memory

    spool when the message changes when in the pool * added support for cloning messages * fixed PHP warning in the redirect plugin * changed the way to and cc-ed email are sent to only use one transaction
  3. v5.3.0 (2014-10-04) * fixed cloning when using signers * reverted

    removal of Swift_Encoding * drop support for PHP 5.2.x
  4. v5.4.0 (2015-03-14) * added the possibility to add extra certs

    to PKCS#7 signature * fix base64 encoding with streams * added a new RESULT_SPOOLED status for SpoolTransport * fixed getBody() on attachments when called more than once * removed dots from generated filenames in filespool
  5. v5.4.1 (2015-06-06) * made Swiftmailer exceptions confirm to PHP base

    exception constructor signature * fixed MAIL FROM & RCPT TO headers to be RFC compliant
  6. v5.4.2 (2016-05-01): part 1 * fixed support for IPv6 sockets

    * added auto-retry when sending messages from the memory spool * fixed consecutive read calls in Swift_ByteStream_FileByteStream * added support for iso-8859-15 encoding * fixed PHP mail extra params on missing reversePath
  7. v5.4.2 (2016-05-01): part 2 * added methods to set custom

    stream context options * fixed charset changes in QpContentEncoderProxy * added return-path header to the ignoredHeaders list of DKIMSigner * fixed crlf for subject using mail * fixed add soft line break only when necessary * fixed escaping command-line args to Sendmail
  8. v5.4.3 (2016-07-08) * fixed SimpleHeaderSet::has()/get() when the 0 index is

    removed * removed the need to have mcrypt installed * fixed broken MIME header encoding with quotes/colons and non-ascii chars * allowed mail transport send for messages without To header * fixed PHP 7 support
  9. added the possibility to add extra certs to PKCS#7 signature

    (v5.4.0) • Possible to add intermediate Certs when S/MIME sending. • https://github.com/swiftmailer/swiftmailer/pull/561
  10. added support for iso-8859-15 encoding (v5.4.2) • Possible to send

    mail encoded ISO-8859-15 • 8-bit single-byte coded graphic character sets — Part 15:
 Latin alphabet No. 9 • https://github.com/swiftmailer/swiftmailer/pull/712
  11. SECURITY FIX: fixed CLI escaping when using sendmail as a

    transport (v5.2.1) • Remote code execution when using sendmail • Lack of escapeshellarg() • https://github.com/swiftmailer/swiftmailer/pull/626
  12. fixed Japanese support (v5.2.2) • Mail was broken when it

    was encode by ISO-2022-JP • mb_convert_encoding() • From v5.2.1 • https://github.com/swiftmailer/swiftmailer/pull/475
  13. fixed MAIL FROM & RCPT TO headers to be RFC

    compliant (v5.4.1) • Remove unnecessary white spaces from SMTP request • NG: MAIL FROM: <[email protected]>
 OK: MAIL FROM:<[email protected]> • https://github.com/swiftmailer/swiftmailer/pull/596
  14. fixed broken MIME header encoding with quotes/colons and non-ascii chars

    • MIME header was broken when using special chars such as ":", "[", "@", etc or non-ascii chars such as "Ö", "Ä", "Ü" etc. • https://github.com/swiftmailer/swiftmailer/pull/774
  15. Install % ruby --version
 ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]

    % gem install mailcatcher
 [snip]
 17 gems installed
  16. Execute % mailcatcher
 Starting MailCatcher
 ==> smtp://127.0.0.1:1025
 ==> http://127.0.0.1:1080
 ***

    MailCatcher runs as a daemon by default.
 Go to the web interface to quit.
  17. HELO localhost % telnet localhost 1025
 Trying 127.0.0.1...
 Connected to

    localhost.
 Escape character is '^]'.
 220 EventMachine SMTP Server
 HELO localhost
 250 Ok EventMachine SMTP Server
 MAIL FROM:<[email protected]>
 250 Ok
 RCPT TO:<[email protected]>
 250 Ok DATA
 354 Send it
 To: <[email protected]>
 From: <[email protected]>
 Subject: Hello mailcatcher
 
 Hi, MailCatcher.
 .
 250 Message accepted
 QUIT
  18. API: /messages [ { "id": 1, "sender": "<[email protected]>", "recipients": [

    "<[email protected]>" ], "subject": "Hello mailcatcher", "size": "102", "created_at": "2016-07-07T23:18:27.000+00:00" } ] % curl -s localhost:1080/messages | jq
  19. API: /messages/:id.json { "id": 1, "sender": "<[email protected]>", "recipients": [ "<[email protected]>"

    ], "subject": "Hello mailcatcher", "source": "To: <[email protected]>\r\nFrom: <[email protected]>\r\nSubject: Hello mailcatcher\r\n\r\nHi, MailCatcher.\r\n", "size": "102", "type": "text/plain", "created_at": "2016-07-07T23:18:27.000+00:00", "formats": [ "source", "plain" ], "attachments": [] } % curl -s localhost:1080/messages/1.json | jq
  20. Sample TestCase use Suzuki\PHPUnit\MailCatcherTestCase; class SendMailTest extends MailCatcherTestCase { public

    function testSend() { $sendMail = new SendMail(); // Send plain text mail $sendMail->send(); $sendMail->send(); $this->assertMailCount(2); $this->assertMailSubject('This is a test mail'); $this->assertMailPlainBodyContains('Hi, it is test'); $this->assertMailHtmlBodyEmpty(); } }