mirror of
				https://github.com/gtbu/Typesetter-5.3-p8.git
				synced 2025-11-04 06:48:27 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			176 lines
		
	
	
	
		
			4.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			176 lines
		
	
	
	
		
			4.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
defined('is_running') or die('Not an entry point...');
 | 
						|
 | 
						|
/**
 | 
						|
 * @deprecated Use email_mailer.php instead
 | 
						|
 * used by minishop addon
 | 
						|
 */
 | 
						|
trigger_error('Deprecated class, please use email_mailer.php instead');
 | 
						|
class gp_email{
 | 
						|
 | 
						|
 | 
						|
	function SendEmail( $to, $subject, $message, $headers=array(), $from_info=array() ){
 | 
						|
		global $config;
 | 
						|
 | 
						|
		trigger_error('gp_email::SendEmail() should not be used');
 | 
						|
 | 
						|
		if(!defined('PHP_EOL'))	define('PHP_EOL', strtoupper(substr(PHP_OS,0,3) == 'WIN') ? "\r\n" : "\n");
 | 
						|
		$message = str_replace("\n.", "\n..", $message); //for windows, see mail() documentation
 | 
						|
		$subject = str_replace(array("\r","\n","\v"),array(" "),$subject);
 | 
						|
 | 
						|
 | 
						|
		$headers[] = 'MIME-Version: 1.0';
 | 
						|
		$headers[] = 'Content-type: text/html; charset=UTF-8';
 | 
						|
		$headers[] = 'Content-Transfer-Encoding: quoted-printable';
 | 
						|
 | 
						|
 | 
						|
 | 
						|
		//from header
 | 
						|
		if( !empty($from_info['address']) && isset($config['from_use_user']) && $config['from_use_user'] ){
 | 
						|
			$name = '';
 | 
						|
			if( !empty($from_info['name']) ){
 | 
						|
				$name = $from_info['name'];
 | 
						|
			}
 | 
						|
			$headers[] = 'From: '.$name.' <'.$from_info['address'].'>';
 | 
						|
 | 
						|
		}else{
 | 
						|
 | 
						|
			$sendmail_from = ini_get('sendmail_from');
 | 
						|
			if( empty($sendmail_from) ){
 | 
						|
				$from = gp_email::From_Address();
 | 
						|
				$headers[] = 'From: Automated Sender <'.$from.'>';
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		$headers = implode(PHP_EOL,$headers);
 | 
						|
		$headers .= PHP_EOL;
 | 
						|
 | 
						|
 | 
						|
		// encode subject
 | 
						|
		//=?UTF-8?Q?encoded_text?=
 | 
						|
		// work a round: for subject with wordwrap
 | 
						|
		// not fixed, no possibility to have one in a single char
 | 
						|
		$subject = wordwrap($subject, 25, "\n", FALSE);
 | 
						|
		$subject = explode("\n", $subject);
 | 
						|
		foreach($subject as $key => $value){
 | 
						|
			$subject[$key] = gp_email::imap_8bit($value);
 | 
						|
		}
 | 
						|
		$subject = implode("\r\n ", $subject);
 | 
						|
		$subject = "=?UTF-8?Q?".$subject."?=";
 | 
						|
 | 
						|
 | 
						|
		//encode
 | 
						|
		$message = gp_email::imap_8bit($message);
 | 
						|
 | 
						|
 | 
						|
		if( mail($to, $subject, $message, $headers) ){
 | 
						|
			return true;
 | 
						|
		}
 | 
						|
		return false;
 | 
						|
	}
 | 
						|
 | 
						|
	function From_Address(){
 | 
						|
		global $config;
 | 
						|
 | 
						|
		if( !empty($config['from_address']) ){
 | 
						|
			return $config['from_address'];
 | 
						|
		}
 | 
						|
 | 
						|
		$from = ini_get('sendmail_from');
 | 
						|
		if( !empty($sendmail_from) ){
 | 
						|
			return $from;
 | 
						|
		}
 | 
						|
 | 
						|
		$server = \gp\tool::ServerName(true);
 | 
						|
		if( !$server === false ){
 | 
						|
			$server = 'localhost';
 | 
						|
		}
 | 
						|
 | 
						|
		return 'AutomatedSender@'.$server;
 | 
						|
	}
 | 
						|
 | 
						|
	function From_Name(){
 | 
						|
		global $config;
 | 
						|
 | 
						|
		if( !empty($config['from_name']) ){
 | 
						|
			return $config['from_name'];
 | 
						|
		}
 | 
						|
		return 'Automated Sender';
 | 
						|
	}
 | 
						|
	function Mail_Method(){
 | 
						|
		global $config;
 | 
						|
		if( !empty($config['mail_method']) ){
 | 
						|
			if( $config['mail_method'] == 'smpt' ){ //bug in 1.7
 | 
						|
				return 'smtp';
 | 
						|
			}
 | 
						|
			return $config['mail_method'];
 | 
						|
		}
 | 
						|
		return 'mail';
 | 
						|
	}
 | 
						|
 | 
						|
	function imap_8bit(&$text){
 | 
						|
		if( function_exists('imap_8bit') ){
 | 
						|
			return imap_8bit($text);
 | 
						|
		}
 | 
						|
		return gp_email::quoted_printable_encode($text);
 | 
						|
	}
 | 
						|
 | 
						|
 | 
						|
	function quoted_printable_encode($sText,$bEmulate_imap_8bit=true) {
 | 
						|
	  // split text into lines
 | 
						|
	  $aLines=explode(chr(13).chr(10),$sText);
 | 
						|
 | 
						|
	  for ($i=0;$i<count($aLines);$i++) {
 | 
						|
		$sLine =& $aLines[$i];
 | 
						|
		if (strlen($sLine)===0) continue; // do nothing, if empty
 | 
						|
 | 
						|
		$sRegExp = '/[^\x09\x20\x21-\x3C\x3E-\x7E]/e';
 | 
						|
 | 
						|
		// imap_8bit encodes x09 everywhere, not only at lineends,
 | 
						|
		// for EBCDIC safeness encode !"#$@[\]^`{|}~,
 | 
						|
		// for complete safeness encode every character :)
 | 
						|
		if ($bEmulate_imap_8bit)
 | 
						|
		  $sRegExp = '/[^\x20\x21-\x3C\x3E-\x7E]/e';
 | 
						|
 | 
						|
		$sReplmt = 'sprintf( "=%02X", ord ( "$0" ) ) ;';
 | 
						|
		$sLine = preg_replace( $sRegExp, $sReplmt, $sLine );
 | 
						|
 | 
						|
		// encode x09,x20 at lineends
 | 
						|
		{
 | 
						|
		  $iLength = strlen($sLine);
 | 
						|
		  $iLastChar = ord($sLine[$iLength-1]);
 | 
						|
 | 
						|
		  //              !!!!!!!!
 | 
						|
		  // imap_8_bit does not encode x20 at the very end of a text,
 | 
						|
		  // here is, where I don't agree with imap_8_bit,
 | 
						|
		  // please correct me, if I'm wrong,
 | 
						|
		  // or comment next line for RFC2045 conformance, if you like
 | 
						|
		  if (!($bEmulate_imap_8bit && ($i==count($aLines)-1)))
 | 
						|
 | 
						|
		  if (($iLastChar==0x09)||($iLastChar==0x20)) {
 | 
						|
			$sLine[$iLength-1]='=';
 | 
						|
			$sLine .= ($iLastChar==0x09)?'09':'20';
 | 
						|
		  }
 | 
						|
		}    // imap_8bit encodes x20 before chr(13), too
 | 
						|
		// although IMHO not requested by RFC2045, why not do it safer :)
 | 
						|
		// and why not encode any x20 around chr(10) or chr(13)
 | 
						|
		if ($bEmulate_imap_8bit) {
 | 
						|
		  $sLine=str_replace(' =0D','=20=0D',$sLine);
 | 
						|
		  //$sLine=str_replace(' =0A','=20=0A',$sLine);
 | 
						|
		  //$sLine=str_replace('=0D ','=0D=20',$sLine);
 | 
						|
		  //$sLine=str_replace('=0A ','=0A=20',$sLine);
 | 
						|
		}
 | 
						|
 | 
						|
		// finally split into softlines no longer than 76 chars,
 | 
						|
		// for even more safeness one could encode x09,x20
 | 
						|
		// at the very first character of the line
 | 
						|
		// and after soft linebreaks, as well,
 | 
						|
		// but this wouldn't be caught by such an easy RegExp
 | 
						|
		preg_match_all( '/.{1,73}([^=]{0,2})?/', $sLine, $aMatch );
 | 
						|
		$sLine = implode( '=' . chr(13).chr(10), $aMatch[0] ); // add soft crlf's
 | 
						|
	  }
 | 
						|
 | 
						|
	  // join lines into text
 | 
						|
	  return implode(chr(13).chr(10),$aLines);
 | 
						|
	}
 | 
						|
}
 |