You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
2.0 KiB
PHTML
70 lines
2.0 KiB
PHTML
12 years ago
|
<?php
|
||
|
|
||
|
/*
|
||
|
* This file is part of SwiftMailer.
|
||
|
* (c) 2004-2009 Chris Corbyn
|
||
|
*
|
||
|
* For the full copyright and license information, please view the LICENSE
|
||
|
* file that was distributed with this source code.
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* Handles Base 64 Transfer Encoding in Swift Mailer.
|
||
|
*
|
||
|
* @package Swift
|
||
|
* @subpackage Mime
|
||
|
* @author Chris Corbyn
|
||
|
*/
|
||
|
class Swift_Mime_ContentEncoder_Base64ContentEncoder extends Swift_Encoder_Base64Encoder implements Swift_Mime_ContentEncoder
|
||
|
{
|
||
|
/**
|
||
|
* Encode stream $in to stream $out.
|
||
|
*
|
||
|
* @param Swift_OutputByteStream $os
|
||
|
* @param Swift_InputByteStream $is
|
||
|
* @param integer $firstLineOffset
|
||
|
* @param integer $maxLineLength, optional, 0 indicates the default of 76 bytes
|
||
|
*/
|
||
|
public function encodeByteStream(Swift_OutputByteStream $os, Swift_InputByteStream $is, $firstLineOffset = 0, $maxLineLength = 0)
|
||
|
{
|
||
|
if (0 >= $maxLineLength || 76 < $maxLineLength) {
|
||
|
$maxLineLength = 76;
|
||
|
}
|
||
|
|
||
|
$remainder = 0;
|
||
|
|
||
|
while (false !== $bytes = $os->read(8190)) {
|
||
|
$encoded = base64_encode($bytes);
|
||
|
$encodedTransformed = '';
|
||
|
$thisMaxLineLength = $maxLineLength - $remainder - $firstLineOffset;
|
||
|
|
||
|
while ($thisMaxLineLength < strlen($encoded)) {
|
||
|
$encodedTransformed .= substr($encoded, 0, $thisMaxLineLength) . "\r\n";
|
||
|
$firstLineOffset = 0;
|
||
|
$encoded = substr($encoded, $thisMaxLineLength);
|
||
|
$thisMaxLineLength = $maxLineLength;
|
||
|
$remainder = 0;
|
||
|
}
|
||
|
|
||
|
if (0 < $remainingLength = strlen($encoded)) {
|
||
|
$remainder += $remainingLength;
|
||
|
$encodedTransformed .= $encoded;
|
||
|
$encoded = null;
|
||
|
}
|
||
|
|
||
|
$is->write($encodedTransformed);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Get the name of this encoding scheme.
|
||
|
* Returns the string 'base64'.
|
||
|
*
|
||
|
* @return string
|
||
|
*/
|
||
|
public function getName()
|
||
|
{
|
||
|
return 'base64';
|
||
|
}
|
||
|
}
|