Post by JNeuhoff » Tue Nov 10, 2009 9:20 pm

Some e-mail clients like Outlook or Evolution sometimes have problems with the base64 transfer encoding. See attached screen dumps.

I think we should have the option to disable the base64 transfer encoding.

Attachments

opencart133-base64-1.png

opencart133-base64-1.png (28.82 KiB) Viewed 3911 times


User avatar
Expert Member

Posts

Joined
Wed Dec 05, 2007 3:38 am


Post by jfima » Wed Nov 11, 2009 12:57 pm

gmail have this bug too!!

Newbie

Posts

Joined
Wed Nov 11, 2009 12:55 pm

Post by JNeuhoff » Thu Nov 12, 2009 4:05 am

What email client are you using? Outlook? Thunderbird? Evolution? KMail? Others?

MHC Web Design
Override Engine * Integrated VQMod * Unused Images Manager * Instant Option Price Calculator * Number Option * Google Rich Snippets * Google Tag Manager * Export/Import Tool * SpamBot Buster


User avatar
Expert Member

Posts

Joined
Wed Dec 05, 2007 3:38 am


Post by Daniel » Fri Nov 13, 2009 7:16 pm

this has to be a problem with the server because I just did a test to my gmail account with both text and html mails and both worked perfectly!

OpenCart®
Project Owner & Developer.


User avatar
Administrator

Posts

Joined
Fri Nov 03, 2006 6:57 pm

Post by Daniel » Fri Nov 13, 2009 7:25 pm

are you all using 1.3.3 with this problem?

OpenCart®
Project Owner & Developer.


User avatar
Administrator

Posts

Joined
Fri Nov 03, 2006 6:57 pm

Post by JNeuhoff » Fri Nov 13, 2009 10:08 pm

I am using 1.3.3. I just ran a test using the Admin's Customer > Mail function, with the following test message:

Code: Select all

<p>
	This is just a test message, please ignore.</p>
<p>
	Juergen</p>
Using 1.3.3 on a 32bit Fedora Core 10 system results in the following correct message (shown here as the message source):

Code: Select all

To: testbuyer@mhccorp.com
Subject: test message
From: Your Store<testseller@mhccorp.com>
Reply-To: Your Store<testseller@mhccorp.com>
X-Mailer: PHP/5.2.9
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="----=_NextPart_63b69330b19b824aed115fbfd20d0681"
X-Evolution-Source: pop://neuhoff%40mhccorp.com@mail.mhccorp.com/


------=_NextPart_63b69330b19b824aed115fbfd20d0681
Content-Type: multipart/alternative; boundary="----=_NextPart_63b69330b19b824aed115fbfd20d0681_alt"


------=_NextPart_63b69330b19b824aed115fbfd20d0681_alt
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64

bm90IHN1cHBvcnQgSFRNTCBlbWFpbCE=
------=_NextPart_63b69330b19b824aed115fbfd20d0681_alt
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: base64

PGh0bWwgZGlyPSJsdHIiIGxhbmc9ImVuIj4KPGhlYWQ+Cjx0aXRsZT50ZXN0IG1lc3NhZ2U8L3Rp
dGxlPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsg
Y2hhcnNldD1VVEYtOCI+CjwvaGVhZD4KPGJvZHk+PHA+DQoJVGhpcyBpcyBqdXN0IGEgdGVzdCBt
ZXNzYWdlLCBwbGVhc2UgaWdub3JlLjwvcD4NCjxwPg0KCUp1ZXJnZW48L3A+DQo8L2JvZHk+Cjwv
aHRtbD4K
------=_NextPart_63b69330b19b824aed115fbfd20d0681_alt--

------=_NextPart_63b69330b19b824aed115fbfd20d0681--
Doing exactly the same from a 64bit CentOS server results in this wrongly base64 encoded message:

Code: Select all

To: testbuyer@mhccorp.com
Subject: test message
From: Fireworx Scotland Display Company <info@terabytetechnology.co.uk>
Reply-To: Fireworx Scotland Display Company <info@terabytetechnology.co.uk>
X-Mailer: PHP/5.1.6
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="----=_NextPart_f4bbac5b4a893c2e88445493c246a48c"
X-Spam-Status: No, score=4.9
X-Spam-Score: 49
X-Spam-Bar: ++++
X-Spam-Flag: NO
X-Evolution-Source: pop://neuhoff%40mhccorp.com@mail.mhccorp.com/


------=_NextPart_f4bbac5b4a893c2e88445493c246a48c

Content-Type: multipart/alternative; boundary="----=_NextPart_f4bbac5b4a893c2e88445493c246a48c_alt"



------=_NextPart_f4bbac5b4a893c2e88445493c246a48c

Content-Type: text/plain; charset="utf-8"

Content-Transfer-Encoding: base64

VGhpcyBpcyBhIEhUTUwgZW1haWwgYW5kIHlvdXIgZW1haWwgY2xpZW50IHNvZnR3YXJlIGRvZXMg

bm90IHN1cHBvcnQgSFRNTCBlbWFpbCE=

------=_NextPart_f4bbac5b4a893c2e88445493c246a48c

Content-Type: text/html; charset="utf-8"

Content-Transfer-Encoding: base64



PGh0bWwgZGlyPSJsdHIiIGxhbmc9ImVuIj4KPGhlYWQ+Cjx0aXRsZT50ZXN0IG1lc3NhZ2U8L3Rp

dGxlPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsg

Y2hhcnNldD1VVEYtOCI+CjwvaGVhZD4KPGJvZHk+PHA+DQoJVGhpcyBpcyBqdXN0IGEgdGVzdCBt

ZXNzYWdlLCBwbGVhc2UgaWdub3JlLjwvcD4NCjxwPg0KCUp1ZXJnZW48L3A+PC9ib2R5Pgo8L2h0

bWw+Cg==

------=_NextPart_f4bbac5b4a893c2e88445493c246a48c



------=_NextPart_f4bbac5b4a893c2e88445493c246a48c--
So maybe the problem is because of using a 64bit system?

MHC Web Design
Override Engine * Integrated VQMod * Unused Images Manager * Instant Option Price Calculator * Number Option * Google Rich Snippets * Google Tag Manager * Export/Import Tool * SpamBot Buster


User avatar
Expert Member

Posts

Joined
Wed Dec 05, 2007 3:38 am


Post by Daniel » Fri Nov 13, 2009 10:41 pm

many thansk J.Neuhoff.

I'm lookign into this now.

OpenCart®
Project Owner & Developer.


User avatar
Administrator

Posts

Joined
Fri Nov 03, 2006 6:57 pm

Post by Daniel » Fri Nov 13, 2009 10:52 pm

what about if you change the

eol from \r\n to \n

in your second eample it shows a space between the lines.

OpenCart®
Project Owner & Developer.


User avatar
Administrator

Posts

Joined
Fri Nov 03, 2006 6:57 pm

Post by Daniel » Fri Nov 13, 2009 11:14 pm

can you please test this code by replacing your mail class with it?

Code: Select all

<?php 
final class Mail { 
	protected $to;
  	protected $from;
  	protected $sender;
  	protected $subject;
  	protected $text;
  	protected $html;
  	protected $attachments = array();
	protected $protocol = 'mail';
	protected $hostname;
	protected $username;
	protected $password;
	protected $port = 25;
	protected $timeout = 5;
	public $charset = 'utf-8';
	public $eol = "\r\n";

	public function __construct($protocol = 'mail', $hostname = '', $username = '', $password = '', $port = '25', $timeout = '5') {
		$this->protocol = $protocol;
		$this->hostname = $hostname;
		$this->username = $username;
		$this->password = $password;
		$this->port = $port;
		$this->timeout = $timeout;	
	}
	
	public function setTo($to) {
    	$this->to = $to;
  	}
	
  	public function setFrom($from) {
    	$this->from = $from;
  	}
	
 	public function addheader($header, $value) {
		$this->headers[$header] = $value;
	}
	
  	public function setSender($sender) {
    	$this->sender = $sender;
  	}
 
  	public function setSubject($subject) {
    	$this->subject = $subject;
  	}
	
	public function setText($text) {
    	$this->text = $text;
  	}

  	public function setHtml($html) {
    	$this->html = $html;
  	}
	
  	public function addAttachment($attachment) {
		if (!is_array($attachment)) {
			$this->attachments[] = $attachment;
		} else{
			$this->attachments = array_merge($this->attachments, $attachment);
		}
  	}

  	public function send() {	
    	if (!$this->to) {
      		exit('Error: E-Mail to required!');
    	}
	
    	if (!$this->from) {
      		exit('Error: E-Mail from required!');
    	}
    
    	if (!$this->sender) {
      		exit('Error: E-Mail sender required!');
    	}
		
		if (!$this->subject) {
      		exit('Error: E-Mail subject required!');
    	}
			
		if ((!$this->text) && (!$this->html)) {
      		exit('Error: E-Mail message required!');
    	}

		if (is_array($this->to)) {
      		$to = implode(',', $this->to);
    	} else {
      		$to = $this->to;
    	}
	  	
		$boundary = '----=_NextPart_' . md5(rand());  
		
		$header = '';
		
		if ($this->protocol != 'mail') {
			$header .= 'To: ' . $to . $this->eol;
			$header .= 'Subject: ' . $this->subject . $this->eol;
		}
		
		$header .= 'From: ' . $this->sender . '<' . $this->from . '>' . $this->eol; 
    	$header .= 'Reply-To: ' . $this->sender . '<' . $this->from . '>' . $this->eol;   
		$header .= 'Return-Path: ' . $this->from . $this->eol;
		$header .= 'X-Mailer: PHP/' . phpversion() . $this->eol;  
    	$header .= 'MIME-Version: 1.0' . $this->eol; 
		$header .= 'Content-Type: multipart/mixed; boundary="' . $boundary . '"' . $this->eol;  
	
		if (!$this->html) {
	  		$message  = '--' . $boundary . $this->eol;  
	  		$message .= 'Content-Type: text/plain; charset="' . $this->charset . '"' . $this->eol; 
	  		$message .= 'Content-Transfer-Encoding: base64' . $this->eol . $this->eol;
      		$message .= chunk_split(base64_encode($this->text), 76, $this->eol);
		} else {
	  		$message  = '--' . $boundary . $this->eol;
	  		$message .= 'Content-Type: multipart/alternative; boundary="' . $boundary . '_alt"' . $this->eol . $this->eol;
	  		$message .= '--' . $boundary . '_alt' . $this->eol;
	  		$message .= 'Content-Type: text/plain; charset="' . $this->charset . '"' . $this->eol; 
	  		$message .= 'Content-Transfer-Encoding: base64' . $this->eol;
	  
	  		if ($this->text) {
        		$message .= chunk_split(base64_encode($this->text), 76, $this->eol);
	  		} else {
	    		$message .= chunk_split(base64_encode('This is a HTML email and your email client software does not support HTML email!'), 76, $this->eol);
      		}	
	  
	  		$message .= '--' . $boundary . '_alt' . $this->eol;
      		$message .= 'Content-Type: text/html; charset="' . $this->charset . '"' . $this->eol; 
      		$message .= 'Content-Transfer-Encoding: base64' . $this->eol . $this->eol;
	  		$message .= chunk_split(base64_encode($this->html), 76, $this->eol); 
			$message .= '--' . $boundary . '_alt--' . $this->eol;		 
		}
		
    	foreach ($this->attachments as $attachment) {  
      		$filename = basename($attachment);  
      		$handle = fopen($attachment, 'r'); 
      		$content = fread($handle, filesize($attachment));
      
	  		fclose($handle);  
	  
      		$message .= '--' . $boundary . $this->eol;
      		$message .= 'Content-Type: application/octetstream' . $this->eol;    
      		$message .= 'Content-Transfer-Encoding: base64' . $this->eol; 
      		$message .= 'Content-Disposition: attachment; filename="' . $filename . '"' . $this->eol; 
      		$message .= 'Content-ID: <' . $filename . '>' . $this->eol . $this->eol;
      		$message .= chunk_split(base64_encode($content), 76, $this->eol);
    	}  

		if ($this->protocol == 'mail') {
			ini_set('sendmail_from', $this->from);
		
    		mail($to, $this->subject, $message, $header);  
		} elseif ($this->protocol == 'smtp') {
			$handle = fsockopen($this->hostname, $this->port, $errno, $errstr, $this->timeout);	
			
			if (!$handle) {
				error_log('Error: ' . $errstr . ' (' . $errno . ')');
			} else {
				if (substr(PHP_OS, 0, 3) != 'WIN') {
					socket_set_timeout($handle, $this->timeout, 0);
				}
				
				while ($line = fgets($handle, 515)) {
					if (substr($line, 3, 1) == ' ') { 
						break; 
					}
				}
			
				if (substr($this->hostname, 0, 3) == 'tls') {
					fputs($handle, 'STARTTLS' . $this->eol);
					
					
					while ($line = fgets($handle, 515)) {
						$reply .= $line;
					
						if (substr($line, 3, 1) == ' ') { 
							break; 
						}
					}
				
					if (substr($reply, 0, 3) != 220) {
						error_log('Error: STARTTLS not accepted from server!');
					}					
				}
			
				if (!empty($this->username)  && !empty($this->password)) {
					fputs($handle, 'EHLO ' . getenv('SERVER_NAME') . $this->eol);
					
					$reply = '';
				
					while ($line = fgets($handle, 515)) {
						$reply .= $line;
					
						if (substr($line, 3, 1) == ' ') { 
							break; 
						}
					}
				
					if (substr($reply, 0, 3) != 250) {
						error_log('Error: EHLO not accepted from server!');
					}
					
					fputs($handle, 'AUTH LOGIN' . $this->eol);
	
					$reply = '';
				
					while ($line = fgets($handle, 515)) {
						$reply .= $line;
					
						if (substr($line, 3, 1) == ' ') { 
							break; 
						}
					}
					
					if (substr($reply, 0, 3) != 334) {
						error_log('Error: AUTH LOGIN not accepted from server!');
					}
	
					fputs($handle, base64_encode($this->username) . $this->eol);
	
					$reply = '';
				
					while ($line = fgets($handle, 515)) {
						$reply .= $line;
					
						if (substr($line, 3, 1) == ' ') { 
							break; 
						}
					}
					
					if (substr($reply, 0, 3) != 334) {
						error_log('Error: Username not accepted from server!');
					}				
	
					fputs($handle, base64_encode($this->password) . $this->eol);
	
					$reply = '';
				
					while ($line = fgets($handle, 515)) {
						$reply .= $line;
					
						if (substr($line, 3, 1) == ' ') { 
							break; 
						}
					}
					
					if (substr($reply, 0, 3) != 235) {
						error_log('Error: Password not accepted from server!');					
					}	
				} else {
					fputs($handle, 'HELO ' . getenv('SERVER_NAME') . $this->eol);
	
					$reply = '';
				
					while ($line = fgets($handle, 515)) {
						$reply .= $line;
					
						if (substr($line, 3, 1) == ' ') { 
							break; 
						}
					}
					
					if (substr($reply, 0, 3) != 250) {
						error_log('Error: HELO not accepted from server!');
					}				
				}
	
				fputs($handle, 'MAIL FROM: <' . $this->from . '>XVERP' . $this->eol);
	
				$reply = '';
			
				while ($line = fgets($handle, 515)) {
					$reply .= $line;
				
					if (substr($line, 3, 1) == ' ') { 
						break; 
					}
				}
				
				if (substr($reply, 0, 3) != 250) {
					error_log('Error: MAIL FROM not accepted from server!');
				}
				
				if (!is_array($this->to)) {
					fputs($handle, 'RCPT TO: <' . $this->to . '>' . $this->eol);
		
					$reply = '';
				
					while ($line = fgets($handle, 515)) {
						$reply .= $line;
					
						if (substr($line, 3, 1) == ' ') { 
							break; 
						}
					}
				
					if ((substr($reply, 0, 3) != 250) && (substr($reply, 0, 3) != 251)) {
						error_log('Error: RCPT TO not accepted from server!');
					}			
				} else {
					foreach ($this->to as $recipient) {
						fputs($handle, 'RCPT TO: <' . $recipient . '>' . $this->eol);
			
						$reply = '';
					
						while ($line = fgets($handle, 515)) {
							$reply .= $line;
						
							if (substr($line, 3, 1) == ' ') { 
								break; 
							}
						}
					
						if ((substr($reply, 0, 3) != 250) && (substr($reply, 0, 3) != 251)) {
							error_log('Error: RCPT TO not accepted from server!');
						}						
					}
				}
	
				fputs($handle, 'DATA' . $this->eol);
	
				$reply = '';
			
				while ($line = fgets($handle, 515)) {
					$reply .= $line;
				
					if (substr($line, 3, 1) == ' ') { 
						break; 
					}
				}
						
				if (substr($reply, 0, 3) != 354) {
					error_log('Error: DATA not accepted from server!');
				}
				
				fputs($handle, $header . $message . $this->eol);
				fputs($handle, '.' . $this->eol);
				
				$reply = '';
			
				while ($line = fgets($handle, 515)) {
					$reply .= $line;
				
					if (substr($line, 3, 1) == ' ') { 
						break; 
					}
				}
				
				if (substr($reply, 0, 3) != 250) {
					error_log('Error: DATA not accepted from server!');
				}
	
				fputs($handle, 'QUIT' . $this->eol);
	
				$reply = '';
			
				while ($line = fgets($handle, 515)) {
					$reply .= $line;
				
					if (substr($line, 3, 1) == ' ') { 
						break; 
					}
				}
				
				if (substr($reply, 0, 3) != 221) {
					error_log('Error: QUIT not accepted from server!');
				}			
				
				fclose($handle);
			}
		}
	}
}
?>

OpenCart®
Project Owner & Developer.


User avatar
Administrator

Posts

Joined
Fri Nov 03, 2006 6:57 pm

Post by JNeuhoff » Sat Nov 14, 2009 12:33 am

Just tested your updated mail.php on both the 32bit Fedora Core 10 server and the 64bit CentOS server, still the same problem with the 64bit CentOS server, OK on the 32bit Fedora Core 10 machine.

MHC Web Design
Override Engine * Integrated VQMod * Unused Images Manager * Instant Option Price Calculator * Number Option * Google Rich Snippets * Google Tag Manager * Export/Import Tool * SpamBot Buster


User avatar
Expert Member

Posts

Joined
Wed Dec 05, 2007 3:38 am


Post by elion » Thu Dec 17, 2009 9:16 pm

I meet same problem too!
after compare with "mail.php" at Opercart 1.3.2
I think it can be fixed by the next code.
add

Code: Select all

if (strpos(PHP_OS, 'WIN') === false) {
			$this->eol = "\n";
		} else {
			$this->eol = "\r\n";
		}
into function __construct ().

I test it at the website http://www.BuyDiscountJerseys.com and it succeed!

the whole code of mail.php may like this:

Code: Select all


<?php 
final class Mail {
	protected $to;
  	protected $from;
  	protected $sender;
  	protected $subject;
  	protected $text;
  	protected $html;
  	protected $attachments = array();
	protected $protocol = 'mail';
	protected $hostname;
	protected $username;
	protected $password;
	protected $port = 25;
	protected $timeout = 5;
	public $charset = 'utf-8';
	public $eol = "\r\n";

	

	public function __construct($protocol = 'mail', $hostname = '', $username = '', $password = '', $port = '25', $timeout = '5') {
		$this->protocol = $protocol;
		$this->hostname = $hostname;
		$this->username = $username;
		$this->password = $password;
		$this->port = $port;
		$this->timeout = $timeout;	

		if (strpos(PHP_OS, 'WIN') === false) {
			$this->eol = "\n";
		} else {
			$this->eol = "\r\n";
		}
	}
	
	public function setTo($to) {
    	$this->to = $to;
  	}
	
  	public function setFrom($from) {
    	$this->from = $from;
  	}
	
 	public function addheader($header, $value) {
		$this->headers[$header] = $value;
	}
	
  	public function setSender($sender) {
    	$this->sender = $sender;
  	}
 
  	public function setSubject($subject) {
    	$this->subject = $subject;
  	}
	
	public function setText($text) {
    	$this->text = $text;
  	}

  	public function setHtml($html) {
    	$this->html = $html;
  	}
	
  	public function addAttachment($attachment) {
		if (!is_array($attachment)) {
			$this->attachments[] = $attachment;
		} else{
			$this->attachments = array_merge($this->attachments, $attachment);
		}
  	}

  	public function send() {	
    	if (!$this->to) {
      		exit('Error: E-Mail to required!');
    	}
	
    	if (!$this->from) {
      		exit('Error: E-Mail from required!');
    	}
    
    	if (!$this->sender) {
      		exit('Error: E-Mail sender required!');
    	}
		
		if (!$this->subject) {
      		exit('Error: E-Mail subject required!');
    	}
			
		if ((!$this->text) && (!$this->html)) {
      		exit('Error: E-Mail message required!');
    	}

		if (is_array($this->to)) {
      		$to = implode(',', $this->to);
    	} else {
      		$to = $this->to;
    	}
	  	
		$boundary = '----=_NextPart_' . md5(rand());  
		
		$header = '';
		
		if ($this->protocol != 'mail') {
			$header .= 'To: ' . $to . $this->eol;
			$header .= 'Subject: ' . $this->subject . $this->eol;
		}
		
		$header .= 'From: ' . $this->sender . '<' . $this->from . '>' . $this->eol; 
    	$header .= 'Reply-To: ' . $this->sender . '<' . $this->from . '>' . $this->eol;   
		$header .= 'Return-Path: ' . $this->from . $this->eol;
		$header .= 'X-Mailer: PHP/' . phpversion() . $this->eol;  
    	$header .= 'MIME-Version: 1.0' . $this->eol; 
		$header .= 'Content-Type: multipart/mixed; boundary="' . $boundary . '"' . $this->eol;  
	
		if (!$this->html) {
	  		$message  = '--' . $boundary . $this->eol;  
	  		$message .= 'Content-Type: text/plain; charset="' . $this->charset . '"' . $this->eol; 
	  		$message .= 'Content-Transfer-Encoding: base64' . $this->eol . $this->eol;
      		$message .= chunk_split(base64_encode($this->text));
		} else {
	  		$message  = '--' . $boundary . $this->eol;
	  		$message .= 'Content-Type: multipart/alternative; boundary="' . $boundary . '_alt"' . $this->eol . $this->eol;
	  		$message .= '--' . $boundary . '_alt' . $this->eol;
	  		$message .= 'Content-Type: text/plain; charset="' . $this->charset . '"' . $this->eol; 
	  		$message .= 'Content-Transfer-Encoding: base64' . $this->eol;
	  
	  		if ($this->text) {
        		$message .= chunk_split(base64_encode($this->text));
	  		} else {
	    		$message .= chunk_split(base64_encode('This is a HTML email and your email client software does not support HTML email!'));
      		}	
	  
	  		$message .= '--' . $boundary . '_alt' . $this->eol;
      		$message .= 'Content-Type: text/html; charset="' . $this->charset . '"' . $this->eol; 
      		$message .= 'Content-Transfer-Encoding: base64' . $this->eol . $this->eol;
	  		$message .= chunk_split(base64_encode($this->html)); 
			$message .= '--' . $boundary . '_alt--' . $this->eol;		 
		}
		
    	foreach ($this->attachments as $attachment) {  
      		$filename = basename($attachment);  
      		$handle = fopen($attachment, 'r'); 
      		$content = fread($handle, filesize($attachment));
      
	  		fclose($handle);  
	  
      		$message .= '--' . $boundary . $this->eol;
      		$message .= 'Content-Type: application/octetstream' . $this->eol;    
      		$message .= 'Content-Transfer-Encoding: base64' . $this->eol; 
      		$message .= 'Content-Disposition: attachment; filename="' . $filename . '"' . $this->eol; 
      		$message .= 'Content-ID: <' . $filename . '>' . $this->eol . $this->eol;
      		$message .= chunk_split(base64_encode($content));
    	}  

		if ($this->protocol == 'mail') {
			ini_set('sendmail_from', $this->from);
		
    		mail($to, $this->subject, $message, $header);  
		} elseif ($this->protocol == 'smtp') {
			$handle = fsockopen($this->hostname, $this->port, $errno, $errstr, $this->timeout);	
			
			if (!$handle) {
				error_log('Error: ' . $errstr . ' (' . $errno . ')');
			} else {
				if (substr(PHP_OS, 0, 3) != 'WIN') {
					socket_set_timeout($handle, $this->timeout, 0);
				}
				
				while ($line = fgets($handle, 515)) {
					if (substr($line, 3, 1) == ' ') { 
						break; 
					}
				}
			
				if (substr($this->hostname, 0, 3) == 'tls') {
					fputs($handle, 'STARTTLS' . $this->eol);
					
					
					while ($line = fgets($handle, 515)) {
						$reply .= $line;
					
						if (substr($line, 3, 1) == ' ') { 
							break; 
						}
					}
				
					if (substr($reply, 0, 3) != 220) {
						error_log('Error: STARTTLS not accepted from server!');
					}					
				}
			
				if (!empty($this->username)  && !empty($this->password)) {
					fputs($handle, 'EHLO ' . getenv('SERVER_NAME') . $this->eol);
					
					$reply = '';
				
					while ($line = fgets($handle, 515)) {
						$reply .= $line;
					
						if (substr($line, 3, 1) == ' ') { 
							break; 
						}
					}
				
					if (substr($reply, 0, 3) != 250) {
						error_log('Error: EHLO not accepted from server!');
					}
					
					fputs($handle, 'AUTH LOGIN' . $this->eol);
	
					$reply = '';
				
					while ($line = fgets($handle, 515)) {
						$reply .= $line;
					
						if (substr($line, 3, 1) == ' ') { 
							break; 
						}
					}
					
					if (substr($reply, 0, 3) != 334) {
						error_log('Error: AUTH LOGIN not accepted from server!');
					}
	
					fputs($handle, base64_encode($this->username) . $this->eol);
	
					$reply = '';
				
					while ($line = fgets($handle, 515)) {
						$reply .= $line;
					
						if (substr($line, 3, 1) == ' ') { 
							break; 
						}
					}
					
					if (substr($reply, 0, 3) != 334) {
						error_log('Error: Username not accepted from server!');
					}				
	
					fputs($handle, base64_encode($this->password) . $this->eol);
	
					$reply = '';
				
					while ($line = fgets($handle, 515)) {
						$reply .= $line;
					
						if (substr($line, 3, 1) == ' ') { 
							break; 
						}
					}
					
					if (substr($reply, 0, 3) != 235) {
						error_log('Error: Password not accepted from server!');					
					}	
				} else {
					fputs($handle, 'HELO ' . getenv('SERVER_NAME') . $this->eol);
	
					$reply = '';
				
					while ($line = fgets($handle, 515)) {
						$reply .= $line;
					
						if (substr($line, 3, 1) == ' ') { 
							break; 
						}
					}
					
					if (substr($reply, 0, 3) != 250) {
						error_log('Error: HELO not accepted from server!');
					}				
				}
	
				fputs($handle, 'MAIL FROM: <' . $this->from . '>XVERP' . $this->eol);
	
				$reply = '';
			
				while ($line = fgets($handle, 515)) {
					$reply .= $line;
				
					if (substr($line, 3, 1) == ' ') { 
						break; 
					}
				}
				
				if (substr($reply, 0, 3) != 250) {
					error_log('Error: MAIL FROM not accepted from server!');
				}
				
				if (!is_array($this->to)) {
					fputs($handle, 'RCPT TO: <' . $this->to . '>' . $this->eol);
		
					$reply = '';
				
					while ($line = fgets($handle, 515)) {
						$reply .= $line;
					
						if (substr($line, 3, 1) == ' ') { 
							break; 
						}
					}
				
					if ((substr($reply, 0, 3) != 250) && (substr($reply, 0, 3) != 251)) {
						error_log('Error: RCPT TO not accepted from server!');
					}			
				} else {
					foreach ($this->to as $recipient) {
						fputs($handle, 'RCPT TO: <' . $recipient . '>' . $this->eol);
			
						$reply = '';
					
						while ($line = fgets($handle, 515)) {
							$reply .= $line;
						
							if (substr($line, 3, 1) == ' ') { 
								break; 
							}
						}
					
						if ((substr($reply, 0, 3) != 250) && (substr($reply, 0, 3) != 251)) {
							error_log('Error: RCPT TO not accepted from server!');
						}						
					}
				}
	
				fputs($handle, 'DATA' . $this->eol);
	
				$reply = '';
			
				while ($line = fgets($handle, 515)) {
					$reply .= $line;
				
					if (substr($line, 3, 1) == ' ') { 
						break; 
					}
				}
						
				if (substr($reply, 0, 3) != 354) {
					error_log('Error: DATA not accepted from server!');
				}
				
				fputs($handle, $header . $message . $this->eol);
				fputs($handle, '.' . $this->eol);
				
				$reply = '';
			
				while ($line = fgets($handle, 515)) {
					$reply .= $line;
				
					if (substr($line, 3, 1) == ' ') { 
						break; 
					}
				}
				
				if (substr($reply, 0, 3) != 250) {
					error_log('Error: DATA not accepted from server!');
				}
	
				fputs($handle, 'QUIT' . $this->eol);
	
				$reply = '';
			
				while ($line = fgets($handle, 515)) {
					$reply .= $line;
				
					if (substr($line, 3, 1) == ' ') { 
						break; 
					}
				}
				
				if (substr($reply, 0, 3) != 221) {
					error_log('Error: QUIT not accepted from server!');
				}			
				
				fclose($handle);
			}
		}
	}
}
?>
Good Luck!

Newbie

Posts

Joined
Thu Dec 17, 2009 9:06 pm

Post by JNeuhoff » Thu Dec 17, 2009 9:37 pm

Hi elion ,

Is your server running on a 32bit or 64bit operating system? And is it Linux?

MHC Web Design
Override Engine * Integrated VQMod * Unused Images Manager * Instant Option Price Calculator * Number Option * Google Rich Snippets * Google Tag Manager * Export/Import Tool * SpamBot Buster


User avatar
Expert Member

Posts

Joined
Wed Dec 05, 2007 3:38 am


Post by elion » Thu Dec 17, 2009 10:19 pm

Yes, JNeuhoff,
my OS is Linux , the Kernel Version is 2.6.28.5-grsec-sg2
by the way , I am using Opencart 1.3.4

Newbie

Posts

Joined
Thu Dec 17, 2009 9:06 pm

Post by adelaida » Sat Mar 06, 2010 10:01 pm

was it fixed already? the encoding in my email client is ok

opencart shopping saved lots of time for me!
thank you! just another situk mind (c)
simply clear uk granny dating website


Newbie

Posts

Joined
Fri Feb 19, 2010 8:17 pm
Who is online

Users browsing this forum: No registered users and 7 guests