Pagina 1 di 1

oscommerce e mail SMTP

Inviato: 17/11/2006, 20:04
da maury2ma
ebbene, ho il problema di dover far funzionare le e-mail su server che non usano sendmail.
ora, ho trovato 3 contrib al riguardo :
http://www.oscommerce.com/community?con ... tegory=all
ho provato la prima che risulta piu' aggiornata:
http://www.oscommerce.com/community/contributions,4013

montata facilmente, ho solo aggiunto codice mysql per cambiare i dati mail da admin anziche scriverli fisicamente nel file .php (user, password, server smtp)

ho provato a mandarmi un e-mail dal catalogo e tutto va che e' una bomba !
pero' l'admin non mi invia nessuna mail !

ho provato sul pacchetto base di oscomerce (modificato solo per register global off), ma ho lo stesso problema.

qualcuno di voi ha provato la contrib con successo ?

se si cosa ha modificato (considerando che la funzione e-mail per admin e catalogo e' identica in tutto e per tutto, non capisco perche' non funziona)

Inviato: 22/11/2006, 14:30
da maury2ma
risolto cambiando il modlo ed aggiornandolo.
a chi interessasse :
http://www.oscommerce.com/community/contributions,901
i 2 file da modificare sono i seguenti (identici sia in admin che in catalog):

catalog/includes/classes/email.php

da :

Codice: Seleziona tutto

      if (EMAIL_TRANSPORT == 'smtp') {
return mail($to_addr, $subject, $this->output, 'From: ' . $from . $this->lf . 'To: ' . $to . $this->lf . implode($this->lf, $this->headers) . $this->lf . implode($this->lf, $xtra_headers));
a:

Codice: Seleziona tutto

      if (EMAIL_TRANSPORT == 'smtp') {
//return mail($to_addr, $subject, $this->output, 'From: ' . $from . $this->lf . 'To: ' . $to . $this->lf . implode($this->lf, $this->headers) . $this->lf . implode($this->lf, $xtra_headers));

// begin smtp authentication
include_once(DIR_WS_CLASSES . 'class.smtp.php'); 
// The smtp server host/ip
$params['host'] = EMAIL_SMTP_HOST_SERVER;
// The smtp server port
$params['port'] = EMAIL_SMTP_PORT_SERVER;
// What to use when sending the helo command. Typically, your domain/hostname
$params['helo'] = EMAIL_SMTP_HELO_SERVER;
// Whether to use basic authentication or not
$params['auth'] = EMAIL_SMTP_ACTIVE_PASSWORD;
// Username for authentication
$params['user'] = EMAIL_SMTP_USERNAME;
// Password for authentication
$params['pass'] = EMAIL_SMTP_PASSWORD;
// The recipients (can be multiple)
$send_params['recipients'] = array("$to_addr");
$send_params['headers'] = array("From: " . EMAIL_SMTP_NAME , "To: $to_addr", "Subject: $subject");
// This is used as in the MAIL FROM: cmd
// It should end up as the Return-Path: header
$send_params['from'] = EMAIL_SMTP_NAME;
// The body of the email
$send_params['body'] = "$this->output";
is_object($smtp = smtp::connect($params)) AND $smtp->send($send_params);
// end smtp authentication
poi in entrambe le cartelle (admin e catalog) sempre in :
catalog/includes/classes/ create un file di testo rinominato : class.smtp.php

e copiateci il seguente codice all'interno :

Codice: Seleziona tutto

<?php
/***************************************
** Filename.......: class.smtp.inc
** Project........: SMTP Class
** Version........: 1.0.5
** Last Modified..: 21 December 2001
***************************************/

	define('SMTP_STATUS_NOT_CONNECTED', 1, TRUE);
	define('SMTP_STATUS_CONNECTED', 2, TRUE);

	class smtp{

		var $authenticated;
		var $connection;
		var $recipients;
		var $headers;
		var $timeout;
		var $errors;
		var $status;
		var $body;
		var $from;
		var $host;
		var $port;
		var $helo;
		var $auth;
		var $user;
		var $pass;

		/***************************************
        ** Constructor function. Arguments:
		** $params - An assoc array of parameters:
		**
		**   host    - The hostname of the smtp server		Default: localhost
		**   port    - The port the smtp server runs on		Default: 25
		**   helo    - What to send as the HELO command		Default: localhost
		**             (typically the hostname of the
		**             machine this script runs on)
		**   auth    - Whether to use basic authentication	Default: FALSE
		**   user    - Username for authentication			Default: <blank>
		**   pass    - Password for authentication			Default: <blank>
		**   timeout - The timeout in seconds for the call	Default: 5
		**             to fsockopen()
        ***************************************/

		function smtp($params = array()){

			if(!defined('CRLF'))
				define('CRLF', "\r\n", TRUE);

			$this->authenticated	= EMAIL_SMTP_ACTIVE_PASSWORD;
			$this->timeout			= 5;
			$this->status			= SMTP_STATUS_NOT_CONNECTED;
			$this->host				= EMAIL_SMTP_HOST_SERVER;
			$this->port				= EMAIL_SMTP_PORT_SERVER;
			$this->helo				= EMAIL_SMTP_HELO_SERVER;
			$this->auth				= EMAIL_SMTP_ACTIVE_PASSWORD;
			$this->user				= EMAIL_SMTP_USERNAME;
			$this->pass				= EMAIL_SMTP_PASSWORD;
			$this->errors   		= array();

			foreach($params as $key => $value){
				$this->$key = $value;
			}
		}

		/***************************************
        ** Connect function. This will, when called
		** statically, create a new smtp object, 
		** call the connect function (ie this function)
		** and return it. When not called statically,
		** it will connect to the server and send
		** the HELO command.
        ***************************************/

		function &connect($params = array()){

			if(!isset($this->status)){
				$obj = new smtp($params);
				if($obj->connect()){
					$obj->status = SMTP_STATUS_CONNECTED;
				}

				return $obj;

			}else{
				$this->connection = fsockopen($this->host, $this->port, $errno, $errstr, $this->timeout);
				if(function_exists('socket_set_timeout')){
					@socket_set_timeout($this->connection, 5, 0);
				}

				$greeting = $this->get_data();
				if(is_resource($this->connection)){
					return $this->auth ? $this->ehlo() : $this->helo();
				}else{
					$this->errors[] = 'Failed to connect to server: '.$errstr;
					return FALSE;
				}
			}
		}

		/***************************************
        ** Function which handles sending the mail.
		** Arguments:
		** $params	- Optional assoc array of parameters.
		**            Can contain:
		**              recipients - Indexed array of recipients
		**              from       - The from address. (used in MAIL FROM:),
		**                           this will be the return path
		**              headers    - Indexed array of headers, one header per array entry
		**              body       - The body of the email
		**            It can also contain any of the parameters from the connect()
		**            function
        ***************************************/

		function send($params = array()){

			foreach($params as $key => $value){
				$this->set($key, $value);
			}

			if($this->is_connected()){

				// Do we auth or not? Note the distinction between the auth variable and auth() function
				if($this->auth AND !$this->authenticated){
					if(!$this->auth())
						return FALSE;
				}

				$this->mail($this->from);
				if(is_array($this->recipients))
					foreach($this->recipients as $value)
						$this->rcpt($value);
				else
					$this->rcpt($this->recipients);

				if(!$this->data())
					return FALSE;

				// Transparency
				$headers = str_replace(CRLF.'.', CRLF.'..', trim(implode(CRLF, $this->headers)));
				$body    = str_replace(CRLF.'.', CRLF.'..', $this->body);
				$body    = $body[0] == '.' ? '.'.$body : $body;

				$this->send_data($headers);
				$this->send_data('');
				$this->send_data($body);
				$this->send_data('.');

				$result = (substr(trim($this->get_data()), 0, 3) === '250');
				//$this->rset();
				return $result;
			}else{
				$this->errors[] = 'Not connected!';
				return FALSE;
			}
		}
		
		/***************************************
        ** Function to implement HELO cmd
        ***************************************/

		function helo(){
			if(is_resource($this->connection)
					AND $this->send_data('HELO '.$this->helo)
					AND substr(trim($error = $this->get_data()), 0, 3) === '250' ){

				return TRUE;

			}else{
				$this->errors[] = 'HELO command failed, output: ' . trim(substr(trim($error),3));
				return FALSE;
			}
		}
		
		/***************************************
        ** Function to implement EHLO cmd
        ***************************************/

		function ehlo(){
			if(is_resource($this->connection)
					AND $this->send_data('EHLO '.$this->helo)
					AND substr(trim($error = $this->get_data()), 0, 3) === '250' ){

				return TRUE;

			}else{
				$this->errors[] = 'EHLO command failed, output: ' . trim(substr(trim($error),3));
				return FALSE;
			}
		}
		
		/***************************************
        ** Function to implement RSET cmd
        ***************************************/

		function rset(){
			if(is_resource($this->connection)
					AND $this->send_data('RSET')
					AND substr(trim($error = $this->get_data()), 0, 3) === '250' ){

				return TRUE;

			}else{
				$this->errors[] = 'RSET command failed, output: ' . trim(substr(trim($error),3));
				return FALSE;
			}
		}
		
		/***************************************
        ** Function to implement QUIT cmd
        ***************************************/

		function quit(){
			if(is_resource($this->connection)
					AND $this->send_data('QUIT')
					AND substr(trim($error = $this->get_data()), 0, 3) === '221' ){

				fclose($this->connection);
				$this->status = SMTP_STATUS_NOT_CONNECTED;
				return TRUE;

			}else{
				$this->errors[] = 'QUIT command failed, output: ' . trim(substr(trim($error),3));
				return FALSE;
			}
		}
		
		/***************************************
        ** Function to implement AUTH cmd
        ***************************************/

		function auth(){
			if(is_resource($this->connection)
					AND $this->send_data('AUTH LOGIN')
					AND substr(trim($error = $this->get_data()), 0, 3) === '334'
					AND $this->send_data(base64_encode($this->user))			// Send username
					AND substr(trim($error = $this->get_data()),0,3) === '334'
					AND $this->send_data(base64_encode($this->pass))			// Send password
					AND substr(trim($error = $this->get_data()),0,3) === '235' ){

				$this->authenticated = TRUE;
				return TRUE;

			}else{
				$this->errors[] = 'AUTH command failed: ' . trim(substr(trim($error),3));
				return FALSE;
			}
		}

		/***************************************
        ** Function that handles the MAIL FROM: cmd
        ***************************************/
		
		function mail($from){

			if($this->is_connected()
				AND $this->send_data('MAIL FROM:<'.$from.'>')
				AND substr(trim($this->get_data()), 0, 2) === '250' ){

				return TRUE;

			}else
				return FALSE;
		}

		/***************************************
        ** Function that handles the RCPT TO: cmd
        ***************************************/
		
		function rcpt($to){

			if($this->is_connected()
				AND $this->send_data('RCPT TO:<'.$to.'>')
				AND substr(trim($error = $this->get_data()), 0, 2) === '25' ){

				return TRUE;

			}else{
				$this->errors[] = trim(substr(trim($error), 3));
				return FALSE;
			}
		}

		/***************************************
        ** Function that sends the DATA cmd
        ***************************************/

		function data(){

			if($this->is_connected()
				AND $this->send_data('DATA')
				AND substr(trim($error = $this->get_data()), 0, 3) === '354' ){
 
				return TRUE;

			}else{
				$this->errors[] = trim(substr(trim($error), 3));
				return FALSE;
			}
		}

		/***************************************
        ** Function to determine if this object
		** is connected to the server or not.
        ***************************************/

		function is_connected(){

			return (is_resource($this->connection) AND ($this->status === SMTP_STATUS_CONNECTED));
		}

		/***************************************
        ** Function to send a bit of data
        ***************************************/

		function send_data($data){

			if(is_resource($this->connection)){
				return fwrite($this->connection, $data.CRLF, strlen($data)+2);
				
			}else
				return FALSE;
		}

		/***************************************
        ** Function to get data.
        ***************************************/

		function &get_data(){

			$return = '';
			$line   = '';
			$loops  = 0;

			if(is_resource($this->connection)){
				while((strpos($return, CRLF) === FALSE OR substr($line,3,1) !== ' ') AND $loops < 100){
					$line    = fgets($this->connection, 512);
					$return .= $line;
					$loops++;
				}
				return $return;

			}else
				return FALSE;
		}

		/***************************************
        ** Sets a variable
        ***************************************/
		
		function set($var, $value){

			$this->$var = $value;
			return TRUE;
		}

	} // End of class
?>
ora eseguite da phpmyadmin il seguente codice :

Codice: Seleziona tutto

INSERT INTO configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) VALUES ('SMTP Server Host address', 'EMAIL_SMTP_HOST_SERVER', 'smtp.mailserver.net', 'EMAIL SMTP HOST SERVER', '12', '10', NULL, now());
INSERT INTO configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) VALUES ('SMTP Server Helo (name ISP default empty) address', 'EMAIL_SMTP_HELO_SERVER', 'mailserver.net', 'EMAIL SMTP HELO SERVER', '12', '11', NULL, now());
INSERT INTO configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) VALUES ('SMTP Server Port (default 25) address', 'EMAIL_SMTP_PORT_SERVER', '25', 'EMAIL SMTP PORT SERVER', '12', '12', NULL, now());
INSERT INTO configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) VALUES ('SMTP Server use password address', 'EMAIL_SMTP_ACTIVE_PASSWORD', 'false', 'EMAIL SMTP ACTIVATE PASSWORD', '12', '13', 'tep_cfg_select_option(array(\'true\', \'false\'), ', now());
INSERT INTO configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) VALUES ('SMTP E-mail Username', 'EMAIL_SMTP_USERNAME', 'e-mail usename', 'EMAIL SMTP USERNAME', '12', '14', NULL, now());
INSERT INTO configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) VALUES ('SMTP E-mail Password', 'EMAIL_SMTP_PASSWORD', 'e-mail password', 'EMAIL SMTP PASSWORD', '12', '15', NULL, now());
insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('SMTP Name address to use protocol SMTP', 'EMAIL_SMTP_NAME', 'e-mail@mailserver.net', 'EMAIL SMTP NAME ADDRESS', '12', '16', NULL, now());
perfetto, ora impostate i valori nell'admin sezione e-mail.
ora siete compatibili con SMTP con password .

Inviato: 22/11/2006, 14:32
da maury2ma
risolto cambiando il modlo ed aggiornandolo.
a chi interessasse :
http://www.oscommerce.com/community/contributions,901
i 2 file da modificare sono i seguenti (identici sia in admin che in catalog):

catalog/includes/classes/email.php

da :

Codice: Seleziona tutto

      if (EMAIL_TRANSPORT == 'smtp') {
return mail($to_addr, $subject, $this->output, 'From: ' . $from . $this->lf . 'To: ' . $to . $this->lf . implode($this->lf, $this->headers) . $this->lf . implode($this->lf, $xtra_headers));
a:

Codice: Seleziona tutto

      if (EMAIL_TRANSPORT == 'smtp') {
//return mail($to_addr, $subject, $this->output, 'From: ' . $from . $this->lf . 'To: ' . $to . $this->lf . implode($this->lf, $this->headers) . $this->lf . implode($this->lf, $xtra_headers));

// begin smtp authentication
include_once(DIR_WS_CLASSES . 'class.smtp.php'); 
// The smtp server host/ip
$params['host'] = EMAIL_SMTP_HOST_SERVER;
// The smtp server port
$params['port'] = EMAIL_SMTP_PORT_SERVER;
// What to use when sending the helo command. Typically, your domain/hostname
$params['helo'] = EMAIL_SMTP_HELO_SERVER;
// Whether to use basic authentication or not
$params['auth'] = EMAIL_SMTP_ACTIVE_PASSWORD;
// Username for authentication
$params['user'] = EMAIL_SMTP_USERNAME;
// Password for authentication
$params['pass'] = EMAIL_SMTP_PASSWORD;
// The recipients (can be multiple)
$send_params['recipients'] = array("$to_addr");
$send_params['headers'] = array("From: " . EMAIL_SMTP_NAME , "To: $to_addr", "Subject: $subject");
// This is used as in the MAIL FROM: cmd
// It should end up as the Return-Path: header
$send_params['from'] = EMAIL_SMTP_NAME;
// The body of the email
$send_params['body'] = "$this->output";
is_object($smtp = smtp::connect($params)) AND $smtp->send($send_params);
// end smtp authentication
poi in entrambe le cartelle (admin e catalog) sempre in :
catalog/includes/classes/ create un file di testo rinominato : class.smtp.php

e copiateci il seguente codice all'interno :

Codice: Seleziona tutto

<?php
/***************************************
** Filename.......: class.smtp.inc
** Project........: SMTP Class
** Version........: 1.0.5
** Last Modified..: 21 December 2001
***************************************/

	define('SMTP_STATUS_NOT_CONNECTED', 1, TRUE);
	define('SMTP_STATUS_CONNECTED', 2, TRUE);

	class smtp{

		var $authenticated;
		var $connection;
		var $recipients;
		var $headers;
		var $timeout;
		var $errors;
		var $status;
		var $body;
		var $from;
		var $host;
		var $port;
		var $helo;
		var $auth;
		var $user;
		var $pass;

		/***************************************
        ** Constructor function. Arguments:
		** $params - An assoc array of parameters:
		**
		**   host    - The hostname of the smtp server		Default: localhost
		**   port    - The port the smtp server runs on		Default: 25
		**   helo    - What to send as the HELO command		Default: localhost
		**             (typically the hostname of the
		**             machine this script runs on)
		**   auth    - Whether to use basic authentication	Default: FALSE
		**   user    - Username for authentication			Default: <blank>
		**   pass    - Password for authentication			Default: <blank>
		**   timeout - The timeout in seconds for the call	Default: 5
		**             to fsockopen()
        ***************************************/

		function smtp($params = array()){

			if(!defined('CRLF'))
				define('CRLF', "\r\n", TRUE);

			$this->authenticated	= EMAIL_SMTP_ACTIVE_PASSWORD;
			$this->timeout			= 5;
			$this->status			= SMTP_STATUS_NOT_CONNECTED;
			$this->host				= EMAIL_SMTP_HOST_SERVER;
			$this->port				= EMAIL_SMTP_PORT_SERVER;
			$this->helo				= EMAIL_SMTP_HELO_SERVER;
			$this->auth				= EMAIL_SMTP_ACTIVE_PASSWORD;
			$this->user				= EMAIL_SMTP_USERNAME;
			$this->pass				= EMAIL_SMTP_PASSWORD;
			$this->errors   		= array();

			foreach($params as $key => $value){
				$this->$key = $value;
			}
		}

		/***************************************
        ** Connect function. This will, when called
		** statically, create a new smtp object, 
		** call the connect function (ie this function)
		** and return it. When not called statically,
		** it will connect to the server and send
		** the HELO command.
        ***************************************/

		function &connect($params = array()){

			if(!isset($this->status)){
				$obj = new smtp($params);
				if($obj->connect()){
					$obj->status = SMTP_STATUS_CONNECTED;
				}

				return $obj;

			}else{
				$this->connection = fsockopen($this->host, $this->port, $errno, $errstr, $this->timeout);
				if(function_exists('socket_set_timeout')){
					@socket_set_timeout($this->connection, 5, 0);
				}

				$greeting = $this->get_data();
				if(is_resource($this->connection)){
					return $this->auth ? $this->ehlo() : $this->helo();
				}else{
					$this->errors[] = 'Failed to connect to server: '.$errstr;
					return FALSE;
				}
			}
		}

		/***************************************
        ** Function which handles sending the mail.
		** Arguments:
		** $params	- Optional assoc array of parameters.
		**            Can contain:
		**              recipients - Indexed array of recipients
		**              from       - The from address. (used in MAIL FROM:),
		**                           this will be the return path
		**              headers    - Indexed array of headers, one header per array entry
		**              body       - The body of the email
		**            It can also contain any of the parameters from the connect()
		**            function
        ***************************************/

		function send($params = array()){

			foreach($params as $key => $value){
				$this->set($key, $value);
			}

			if($this->is_connected()){

				// Do we auth or not? Note the distinction between the auth variable and auth() function
				if($this->auth AND !$this->authenticated){
					if(!$this->auth())
						return FALSE;
				}

				$this->mail($this->from);
				if(is_array($this->recipients))
					foreach($this->recipients as $value)
						$this->rcpt($value);
				else
					$this->rcpt($this->recipients);

				if(!$this->data())
					return FALSE;

				// Transparency
				$headers = str_replace(CRLF.'.', CRLF.'..', trim(implode(CRLF, $this->headers)));
				$body    = str_replace(CRLF.'.', CRLF.'..', $this->body);
				$body    = $body[0] == '.' ? '.'.$body : $body;

				$this->send_data($headers);
				$this->send_data('');
				$this->send_data($body);
				$this->send_data('.');

				$result = (substr(trim($this->get_data()), 0, 3) === '250');
				//$this->rset();
				return $result;
			}else{
				$this->errors[] = 'Not connected!';
				return FALSE;
			}
		}
		
		/***************************************
        ** Function to implement HELO cmd
        ***************************************/

		function helo(){
			if(is_resource($this->connection)
					AND $this->send_data('HELO '.$this->helo)
					AND substr(trim($error = $this->get_data()), 0, 3) === '250' ){

				return TRUE;

			}else{
				$this->errors[] = 'HELO command failed, output: ' . trim(substr(trim($error),3));
				return FALSE;
			}
		}
		
		/***************************************
        ** Function to implement EHLO cmd
        ***************************************/

		function ehlo(){
			if(is_resource($this->connection)
					AND $this->send_data('EHLO '.$this->helo)
					AND substr(trim($error = $this->get_data()), 0, 3) === '250' ){

				return TRUE;

			}else{
				$this->errors[] = 'EHLO command failed, output: ' . trim(substr(trim($error),3));
				return FALSE;
			}
		}
		
		/***************************************
        ** Function to implement RSET cmd
        ***************************************/

		function rset(){
			if(is_resource($this->connection)
					AND $this->send_data('RSET')
					AND substr(trim($error = $this->get_data()), 0, 3) === '250' ){

				return TRUE;

			}else{
				$this->errors[] = 'RSET command failed, output: ' . trim(substr(trim($error),3));
				return FALSE;
			}
		}
		
		/***************************************
        ** Function to implement QUIT cmd
        ***************************************/

		function quit(){
			if(is_resource($this->connection)
					AND $this->send_data('QUIT')
					AND substr(trim($error = $this->get_data()), 0, 3) === '221' ){

				fclose($this->connection);
				$this->status = SMTP_STATUS_NOT_CONNECTED;
				return TRUE;

			}else{
				$this->errors[] = 'QUIT command failed, output: ' . trim(substr(trim($error),3));
				return FALSE;
			}
		}
		
		/***************************************
        ** Function to implement AUTH cmd
        ***************************************/

		function auth(){
			if(is_resource($this->connection)
					AND $this->send_data('AUTH LOGIN')
					AND substr(trim($error = $this->get_data()), 0, 3) === '334'
					AND $this->send_data(base64_encode($this->user))			// Send username
					AND substr(trim($error = $this->get_data()),0,3) === '334'
					AND $this->send_data(base64_encode($this->pass))			// Send password
					AND substr(trim($error = $this->get_data()),0,3) === '235' ){

				$this->authenticated = TRUE;
				return TRUE;

			}else{
				$this->errors[] = 'AUTH command failed: ' . trim(substr(trim($error),3));
				return FALSE;
			}
		}

		/***************************************
        ** Function that handles the MAIL FROM: cmd
        ***************************************/
		
		function mail($from){

			if($this->is_connected()
				AND $this->send_data('MAIL FROM:<'.$from.'>')
				AND substr(trim($this->get_data()), 0, 2) === '250' ){

				return TRUE;

			}else
				return FALSE;
		}

		/***************************************
        ** Function that handles the RCPT TO: cmd
        ***************************************/
		
		function rcpt($to){

			if($this->is_connected()
				AND $this->send_data('RCPT TO:<'.$to.'>')
				AND substr(trim($error = $this->get_data()), 0, 2) === '25' ){

				return TRUE;

			}else{
				$this->errors[] = trim(substr(trim($error), 3));
				return FALSE;
			}
		}

		/***************************************
        ** Function that sends the DATA cmd
        ***************************************/

		function data(){

			if($this->is_connected()
				AND $this->send_data('DATA')
				AND substr(trim($error = $this->get_data()), 0, 3) === '354' ){
 
				return TRUE;

			}else{
				$this->errors[] = trim(substr(trim($error), 3));
				return FALSE;
			}
		}

		/***************************************
        ** Function to determine if this object
		** is connected to the server or not.
        ***************************************/

		function is_connected(){

			return (is_resource($this->connection) AND ($this->status === SMTP_STATUS_CONNECTED));
		}

		/***************************************
        ** Function to send a bit of data
        ***************************************/

		function send_data($data){

			if(is_resource($this->connection)){
				return fwrite($this->connection, $data.CRLF, strlen($data)+2);
				
			}else
				return FALSE;
		}

		/***************************************
        ** Function to get data.
        ***************************************/

		function &get_data(){

			$return = '';
			$line   = '';
			$loops  = 0;

			if(is_resource($this->connection)){
				while((strpos($return, CRLF) === FALSE OR substr($line,3,1) !== ' ') AND $loops < 100){
					$line    = fgets($this->connection, 512);
					$return .= $line;
					$loops++;
				}
				return $return;

			}else
				return FALSE;
		}

		/***************************************
        ** Sets a variable
        ***************************************/
		
		function set($var, $value){

			$this->$var = $value;
			return TRUE;
		}

	} // End of class
?>
ora eseguite da phpmyadmin il seguente codice :

Codice: Seleziona tutto

INSERT INTO configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) VALUES ('SMTP Server Host address', 'EMAIL_SMTP_HOST_SERVER', 'smtp.mailserver.net', 'EMAIL SMTP HOST SERVER', '12', '10', NULL, now());
INSERT INTO configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) VALUES ('SMTP Server Helo (name ISP default empty) address', 'EMAIL_SMTP_HELO_SERVER', 'mailserver.net', 'EMAIL SMTP HELO SERVER', '12', '11', NULL, now());
INSERT INTO configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) VALUES ('SMTP Server Port (default 25) address', 'EMAIL_SMTP_PORT_SERVER', '25', 'EMAIL SMTP PORT SERVER', '12', '12', NULL, now());
INSERT INTO configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) VALUES ('SMTP Server use password address', 'EMAIL_SMTP_ACTIVE_PASSWORD', 'false', 'EMAIL SMTP ACTIVATE PASSWORD', '12', '13', 'tep_cfg_select_option(array(\'true\', \'false\'), ', now());
INSERT INTO configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) VALUES ('SMTP E-mail Username', 'EMAIL_SMTP_USERNAME', 'e-mail usename', 'EMAIL SMTP USERNAME', '12', '14', NULL, now());
INSERT INTO configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) VALUES ('SMTP E-mail Password', 'EMAIL_SMTP_PASSWORD', 'e-mail password', 'EMAIL SMTP PASSWORD', '12', '15', NULL, now());
insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('SMTP Name address to use protocol SMTP', 'EMAIL_SMTP_NAME', 'e-mail@mailserver.net', 'EMAIL SMTP NAME ADDRESS', '12', '16', NULL, now());
perfetto, ora impostate i valori nell'admin sezione e-mail.
ora siete compatibili con SMTP con password .