Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/abomailmans_fonctions.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/abomailmans_fonctions.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/abomailmans_fonctions.php	(revision 76)
@@ -0,0 +1,27 @@
+<?php
+/*
+ * Abomailmans
+ * MaZiaR - NetAktiv
+ * tech@netaktiv.com
+ * Printemps 2007
+*/
+
+	function abomailman_checkbox ($texte) {		
+		$liste = explode ("@", $texte);
+		$nom_liste_join = $liste[0] ."-join";
+		$domaine = $liste[1];
+		$abonnement = $nom_liste_join . "@" . $domaine;
+
+		return $texte = "<input name=\"listes[]\" type=\"checkbox\" value=\"" . $abonnement . "\" />";	
+	}
+
+	function abomailman_inputhidden ($texte) {		
+		$liste = explode ("@", $texte);
+		$nom_liste_join = $liste[0] ."-join";
+		$domaine = $liste[1];
+		$abonnement = $nom_liste_join . "@" . $domaine;
+
+		return $texte = "<input name=\"listes[]\" value=\"" . $abonnement . "\" type=\"hidden\">";	
+	}
+
+?>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/abomailmans_interface.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/abomailmans_interface.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/abomailmans_interface.php	(revision 76)
@@ -0,0 +1,45 @@
+<?php
+/*
+ * Abomailmans
+ * MaZiaR - NetAktiv
+ * tech@netaktiv.com
+ * Printemps 2007
+*/
+
+function abomailmans_ajouter_boutons($boutons_admin) {
+	// si on est admin
+	if ($GLOBALS['connect_statut'] == "0minirezo" && $GLOBALS["connect_toutes_rubriques"]
+	AND $GLOBALS["options"]=="avancees" 
+	AND (!isset($GLOBALS['meta']['activer_abomailmans']) OR $GLOBALS['meta']['activer_abomailmans']!="non") ) {
+
+	  // on voit le bouton dans la barre "naviguer"
+		$boutons_admin['naviguer']->sousmenu["abomailmans_tous"]= new Bouton(
+		"../"._DIR_PLUGIN_ABOMAILMANS."/img_pack/mailman.gif",  // icone
+		_T("abomailmans:abomailmans") //titre
+		);
+	}
+	return $boutons_admin;
+}
+
+
+function abomailmans_header_prive($flux) {
+		$exec = _request('exec');
+		$flux .="\n\n<!-- PLUGIN ABOMAILMANS -->\n";
+		$flux .= "<script type=\"text/javascript\" src=\"" ._DIR_PLUGIN_ABOMAILMANS . "js/jQuery_myScripts.js\"></script>\n";
+		if ($exec=="abomailmans_envoyer") {
+			$flux .= "<script type=\"text/javascript\" src=\"" ._DIR_PLUGIN_ABOMAILMANS . "js/datePicker.js\"></script>\n";
+			$flux .= "<script type=\"text/javascript\" src=\"" ._DIR_PLUGIN_ABOMAILMANS . "js/datePicker_myScripts.js\"></script>\n";
+			$flux .= "<link rel=\"stylesheet\" href=\"" ._DIR_PLUGIN_ABOMAILMANS . "css/datePicker.css\" type=\"text/css\" />\n";}
+		$flux .="<!-- / PLUGIN ABOMAILMANS -->\n\n";
+		return $flux;
+	}
+function abomailmans_insert_head($flux) {
+		$exec = _request('exec');
+		$flux .="\n\n<!-- PLUGIN ABOMAILMANS -->\n";
+		
+			$flux .= "<link rel=\"stylesheet\" href=\"" ._DIR_PLUGIN_ABOMAILMANS . "css/abomailmans_style.css\" type=\"text/css\" />\n";
+		$flux .="<!-- / PLUGIN ABOMAILMANS -->\n\n";
+		return $flux;
+	}
+?>
+
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/abomailmans_options.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/abomailmans_options.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/abomailmans_options.php	(revision 76)
@@ -0,0 +1,12 @@
+<?php
+/*
+ * Abomailmans
+ * MaZiaR - NetAktiv
+ * tech@netaktiv.com
+ * Printemps 2007
+*/
+
+$p=explode(basename(_DIR_PLUGINS)."/",str_replace('\\','/',realpath(dirname(__FILE__))));
+define('_DIR_PLUGIN_ABOMAILMANS',(_DIR_PLUGINS.end($p)));
+include_spip('base/abomailmans');
+?>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/balise/formulaire_abomailman.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/balise/formulaire_abomailman.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/balise/formulaire_abomailman.php	(revision 76)
@@ -0,0 +1,51 @@
+<?php
+/*
+ * Abomailmans
+ * MaZiaR - NetAktiv
+ * tech@netaktiv.com
+ * Printemps 2007
+*/
+
+if (!defined("_ECRIRE_INC_VERSION")) return;	#securite
+
+
+function balise_FORMULAIRE_ABOMAILMAN($p) {
+	 return calculer_balise_dynamique($p,'FORMULAIRE_ABOMAILMAN', array('id_abomailman'));}
+
+function balise_FORMULAIRE_ABOMAILMAN_stat($args, $filtres) {
+	return (array($args[1])); }
+
+function balise_FORMULAIRE_ABOMAILMAN_dyn($id_abomailman) {
+	include_spip ("inc/abomailmans");
+
+	$nom = _request('nom');
+	$prenom = _request('prenom');
+	$email = _request('email');
+	$listes = _request('listes', true);
+	$abonnement = _request('abonnement');
+
+
+	if ($abonnement && $email) {
+		foreach($listes as $liste_join) {
+			if (abomailman_mail ($prenom . " " . $nom, $email, $liste_join, $liste_join)) {
+				$liste_confirme  .= _T("abomailmans:message_confirmation") ." <b>". $liste_join ."</b><br>";
+			}		
+		 }
+		$rslt = array(
+			"id_abomailman" => "NULL",
+			"message"		=> $liste_confirme
+		);
+	}
+	else {
+		if ($abonnement && !$email) $message =_T("abomailmans:email_oublie");
+		$rslt = array(
+			"id_abomailman" => $id_abomailman,
+			"message"		=> $message
+		);
+	}
+	return array('formulaires/formulaire_abomailman',0, $rslt);
+}
+
+
+
+?>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/balise/formulaire_abomailman_une_liste.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/balise/formulaire_abomailman_une_liste.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/balise/formulaire_abomailman_une_liste.php	(revision 76)
@@ -0,0 +1,50 @@
+<?php
+/*
+ * Abomailmans
+ * MaZiaR - NetAktiv
+ * tech@netaktiv.com
+ * Printemps 2007
+*/
+if (!defined("_ECRIRE_INC_VERSION")) return;	#securite
+
+
+function balise_FORMULAIRE_ABOMAILMAN_UNE_LISTE($p) {
+	 return calculer_balise_dynamique($p,'FORMULAIRE_ABOMAILMAN_UNE_LISTE', array('id_abomailman'));}
+
+function balise_FORMULAIRE_ABOMAILMAN_UNE_LISTE_stat($args, $filtres) {
+	return (array($args[1])); }
+
+function balise_FORMULAIRE_ABOMAILMAN_UNE_LISTE_dyn($id_abomailman) {
+	include_spip ("inc/abomailmans");
+
+	$nom = _request('nom');
+	$prenom = _request('prenom');
+	$email = _request('email');
+	$listes = _request('listes', true);
+	$abonnement = _request('abonnement');
+
+	if ($abonnement && $email) {
+		foreach($listes as $liste_join) {
+			if (abomailman_mail ($prenom . " " . $nom, $email, $liste_join, $liste_join)) {
+				$liste_confirme  .= _T("abomailmans:message_confirmation") ." <b>". $liste_join ."</b><br>";
+			}		
+		 }
+
+		$rslt = array(
+			"id_abomailman" => "NULL",
+			"liste_confirme"		=> $liste_confirme
+		);
+	}
+	else {
+		if ($abonnement && !$email) $message =_T("abomailmans:email_oublie");
+			$rslt = array(
+				"id_abomailman" => $id_abomailman,
+				"message"		=> $message
+			);
+	}
+	return array('formulaires/formulaire_abomailman_une_liste',0, $rslt);
+}
+
+
+
+?>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/base/abomailmans.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/base/abomailmans.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/base/abomailmans.php	(revision 76)
@@ -0,0 +1,44 @@
+<?php
+/*
+ * Abomailmans
+ * MaZiaR - NetAktiv
+ * tech@netaktiv.com
+ * Printemps 2007
+*/
+
+$spip_abomailmans = array(
+	"id_abomailman" 		=> "bigint(21) NOT NULL",
+	"titre" 		=> "varchar(255) NOT NULL",
+	"descriptif" 	=> "text",
+	"email"			=> "varchar(255)",
+	"maj" 			=> "TIMESTAMP");
+
+$spip_abomailmans_key = array(
+	"PRIMARY KEY" => "id_abomailman");
+
+global $tables_principales;
+$tables_principales['spip_abomailmans'] = array(
+	'field' => &$spip_abomailmans,
+	'key' => &$spip_abomailmans_key);
+
+
+
+global $table_des_tables;
+$table_des_tables['abomailmans']='abomailmans';
+
+
+//
+// <BOUCLE(ABONNEMENTSMAILMANS)>
+//
+
+function boucle_ABOMAILMANS_dist($id_boucle, &$boucles) {
+	$boucle = &$boucles[$id_boucle];
+	$id_table = $boucle->id_table;
+	$boucle->from[$id_table] =  "spip_abomailmans";
+	$email_liste = $id_table .'.email';
+	$boucle->where[]= array("'IS NOT'", "'$email_liste'", "'NULL'");
+
+	return calculer_boucle($id_boucle, $boucles); 
+}
+
+?>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/base/abomailmans_upgrade.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/base/abomailmans_upgrade.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/base/abomailmans_upgrade.php	(revision 76)
@@ -0,0 +1,49 @@
+<?php
+/*
+ * Abomailmans
+ * MaZiaR - NetAktiv
+ * tech@netaktiv.com
+ * Printemps 2007
+*/
+	
+	$GLOBALS['abomailmans_base_version'] = 0.10;
+	function abomailmans_upgrade(){
+		$version_base = $GLOBALS['abomailmans_base_version'];
+		$current_version = 0.0;
+		if (   (isset($GLOBALS['meta']['abomailmans_base_version']) )
+				&& (($current_version = $GLOBALS['meta']['abomailmans_base_version'])==$version_base))
+			return;
+
+		include_spip('base/abomailmans');
+		if ($current_version==0.0){
+			include_spip('base/create');
+			include_spip('base/abstract_sql');
+			creer_base();
+			ecrire_meta('abomailmans_base_version',$current_version=$version_base);
+		}
+		ecrire_metas();
+	}
+	
+	function abomailmans_vider_tables() {
+		spip_query("DROP TABLE spip_abomailmans");
+
+		effacer_meta('abomailmans_base_version');
+		ecrire_metas();
+	}
+	
+	function abomailmans_install($action){
+		global $forms_base_version;
+		switch ($action){
+			case 'test':
+				return (isset($GLOBALS['meta']['abomailmans_base_version']) AND ($GLOBALS['meta']['abomailmans_base_version']==$GLOBALS['abomailmans_base_version']));
+				break;
+			case 'install':
+			
+				abomailmans_upgrade();
+				break;
+			case 'uninstall':
+				abomailmans_vider_tables();
+				break;
+		}
+	}	
+?>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/class.phpmailer.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/class.phpmailer.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/class.phpmailer.php	(revision 76)
@@ -0,0 +1,1499 @@
+<?php
+////////////////////////////////////////////////////
+// PHPMailer - PHP email class
+//
+// Class for sending email using either
+// sendmail, PHP mail(), or SMTP.  Methods are
+// based upon the standard AspEmail(tm) classes.
+//
+// Copyright (C) 2001 - 2003  Brent R. Matzelle
+//
+// License: LGPL, see LICENSE
+////////////////////////////////////////////////////
+
+/**
+ * PHPMailer - PHP email transport class
+ * @package PHPMailer
+ * @author Brent R. Matzelle
+ * @copyright 2001 - 2003 Brent R. Matzelle
+ */
+class PHPMailer
+{
+    /////////////////////////////////////////////////
+    // PUBLIC VARIABLES
+    /////////////////////////////////////////////////
+
+    /**
+     * Email priority (1 = High, 3 = Normal, 5 = low).
+     * @var int
+     */
+    var $Priority          = 3;
+
+    /**
+     * Sets the CharSet of the message.
+     * @var string
+     */
+    var $CharSet           = "iso-8859-1";
+
+    /**
+     * Sets the Content-type of the message.
+     * @var string
+     */
+    var $ContentType        = "text/plain";
+
+    /**
+     * Sets the Encoding of the message. Options for this are "8bit",
+     * "7bit", "binary", "base64", and "quoted-printable".
+     * @var string
+     */
+    var $Encoding          = "8bit";
+
+    /**
+     * Holds the most recent mailer error message.
+     * @var string
+     */
+    var $ErrorInfo         = "";
+
+    /**
+     * Sets the From email address for the message.
+     * @var string
+     */
+    var $From               = "root@localhost";
+
+    /**
+     * Sets the From name of the message.
+     * @var string
+     */
+    var $FromName           = "Root User";
+
+    /**
+     * Sets the Sender email (Return-Path) of the message.  If not empty,
+     * will be sent via -f to sendmail or as 'MAIL FROM' in smtp mode.
+     * @var string
+     */
+    var $Sender            = "";
+
+    /**
+     * Sets the Subject of the message.
+     * @var string
+     */
+    var $Subject           = "";
+
+    /**
+     * Sets the Body of the message.  This can be either an HTML or text body.
+     * If HTML then run IsHTML(true).
+     * @var string
+     */
+    var $Body               = "";
+
+    /**
+     * Sets the text-only body of the message.  This automatically sets the
+     * email to multipart/alternative.  This body can be read by mail
+     * clients that do not have HTML email capability such as mutt. Clients
+     * that can read HTML will view the normal Body.
+     * @var string
+     */
+    var $AltBody           = "";
+
+    /**
+     * Sets word wrapping on the body of the message to a given number of 
+     * characters.
+     * @var int
+     */
+    var $WordWrap          = 0;
+
+    /**
+     * Method to send mail: ("mail", "sendmail", or "smtp").
+     * @var string
+     */
+    var $Mailer            = "mail";
+
+    /**
+     * Sets the path of the sendmail program.
+     * @var string
+     */
+    var $Sendmail          = "/usr/sbin/sendmail";
+    
+    /**
+     * Path to PHPMailer plugins.  This is now only useful if the SMTP class 
+     * is in a different directory than the PHP include path.  
+     * @var string
+     */
+    var $PluginDir         = "";
+
+    /**
+     *  Holds PHPMailer version.
+     *  @var string
+     */
+    var $Version           = "1.73";
+
+    /**
+     * Sets the email address that a reading confirmation will be sent.
+     * @var string
+     */
+    var $ConfirmReadingTo  = "";
+
+    /**
+     *  Sets the hostname to use in Message-Id and Received headers
+     *  and as default HELO string. If empty, the value returned
+     *  by SERVER_NAME is used or 'localhost.localdomain'.
+     *  @var string
+     */
+    var $Hostname          = "";
+
+    /////////////////////////////////////////////////
+    // SMTP VARIABLES
+    /////////////////////////////////////////////////
+
+    /**
+     *  Sets the SMTP hosts.  All hosts must be separated by a
+     *  semicolon.  You can also specify a different port
+     *  for each host by using this format: [hostname:port]
+     *  (e.g. "smtp1.example.com:25;smtp2.example.com").
+     *  Hosts will be tried in order.
+     *  @var string
+     */
+    var $Host        = "localhost";
+
+    /**
+     *  Sets the default SMTP server port.
+     *  @var int
+     */
+    var $Port        = 25;
+
+    /**
+     *  Sets the SMTP HELO of the message (Default is $Hostname).
+     *  @var string
+     */
+    var $Helo        = "";
+
+    /**
+     *  Sets SMTP authentication. Utilizes the Username and Password variables.
+     *  @var bool
+     */
+    var $SMTPAuth     = false;
+
+    /**
+     *  Sets SMTP username.
+     *  @var string
+     */
+    var $Username     = "";
+
+    /**
+     *  Sets SMTP password.
+     *  @var string
+     */
+    var $Password     = "";
+
+    /**
+     *  Sets the SMTP server timeout in seconds. This function will not 
+     *  work with the win32 version.
+     *  @var int
+     */
+    var $Timeout      = 10;
+
+    /**
+     *  Sets SMTP class debugging on or off.
+     *  @var bool
+     */
+    var $SMTPDebug    = false;
+
+    /**
+     * Prevents the SMTP connection from being closed after each mail 
+     * sending.  If this is set to true then to close the connection 
+     * requires an explicit call to SmtpClose(). 
+     * @var bool
+     */
+    var $SMTPKeepAlive = false;
+
+    /**#@+
+     * @access private
+     */
+    var $smtp            = NULL;
+    var $to              = array();
+    var $cc              = array();
+    var $bcc             = array();
+    var $ReplyTo         = array();
+    var $attachment      = array();
+    var $CustomHeader    = array();
+    var $message_type    = "";
+    var $boundary        = array();
+    var $language        = array();
+    var $error_count     = 0;
+    var $LE              = "\n";
+    /**#@-*/
+    
+    /////////////////////////////////////////////////
+    // VARIABLE METHODS
+    /////////////////////////////////////////////////
+
+    /**
+     * Sets message type to HTML.  
+     * @param bool $bool
+     * @return void
+     */
+    function IsHTML($bool) {
+        if($bool == true)
+            $this->ContentType = "text/html";
+        else
+            $this->ContentType = "text/plain";
+    }
+
+    /**
+     * Sets Mailer to send message using SMTP.
+     * @return void
+     */
+    function IsSMTP() {
+        $this->Mailer = "smtp";
+    }
+
+    /**
+     * Sets Mailer to send message using PHP mail() function.
+     * @return void
+     */
+    function IsMail() {
+        $this->Mailer = "mail";
+    }
+
+    /**
+     * Sets Mailer to send message using the $Sendmail program.
+     * @return void
+     */
+    function IsSendmail() {
+        $this->Mailer = "sendmail";
+    }
+
+    /**
+     * Sets Mailer to send message using the qmail MTA. 
+     * @return void
+     */
+    function IsQmail() {
+        $this->Sendmail = "/var/qmail/bin/sendmail";
+        $this->Mailer = "sendmail";
+    }
+
+
+    /////////////////////////////////////////////////
+    // RECIPIENT METHODS
+    /////////////////////////////////////////////////
+
+    /**
+     * Adds a "To" address.  
+     * @param string $address
+     * @param string $name
+     * @return void
+     */
+    function AddAddress($address, $name = "") {
+        $cur = count($this->to);
+        $this->to[$cur][0] = trim($address);
+        $this->to[$cur][1] = $name;
+    }
+
+    /**
+     * Adds a "Cc" address. Note: this function works
+     * with the SMTP mailer on win32, not with the "mail"
+     * mailer.  
+     * @param string $address
+     * @param string $name
+     * @return void
+    */
+    function AddCC($address, $name = "") {
+        $cur = count($this->cc);
+        $this->cc[$cur][0] = trim($address);
+        $this->cc[$cur][1] = $name;
+    }
+
+    /**
+     * Adds a "Bcc" address. Note: this function works
+     * with the SMTP mailer on win32, not with the "mail"
+     * mailer.  
+     * @param string $address
+     * @param string $name
+     * @return void
+     */
+    function AddBCC($address, $name = "") {
+        $cur = count($this->bcc);
+        $this->bcc[$cur][0] = trim($address);
+        $this->bcc[$cur][1] = $name;
+    }
+
+    /**
+     * Adds a "Reply-to" address.  
+     * @param string $address
+     * @param string $name
+     * @return void
+     */
+    function AddReplyTo($address, $name = "") {
+        $cur = count($this->ReplyTo);
+        $this->ReplyTo[$cur][0] = trim($address);
+        $this->ReplyTo[$cur][1] = $name;
+    }
+
+
+    /////////////////////////////////////////////////
+    // MAIL SENDING METHODS
+    /////////////////////////////////////////////////
+
+    /**
+     * Creates message and assigns Mailer. If the message is
+     * not sent successfully then it returns false.  Use the ErrorInfo
+     * variable to view description of the error.  
+     * @return bool
+     */
+    function Send() {
+        $header = "";
+        $body = "";
+        $result = true;
+
+        if((count($this->to) + count($this->cc) + count($this->bcc)) < 1)
+        {
+            $this->SetError($this->Lang("provide_address"));
+            return false;
+        }
+
+        // Set whether the message is multipart/alternative
+        if(!empty($this->AltBody))
+            $this->ContentType = "multipart/alternative";
+
+        $this->error_count = 0; // reset errors
+        $this->SetMessageType();
+        $header .= $this->CreateHeader();
+        $body = $this->CreateBody();
+
+        if($body == "") { return false; }
+
+        // Choose the mailer
+        switch($this->Mailer)
+        {
+            case "sendmail":
+                $result = $this->SendmailSend($header, $body);
+                break;
+            case "mail":
+                $result = $this->MailSend($header, $body);
+                break;
+            case "smtp":
+                $result = $this->SmtpSend($header, $body);
+                break;
+            default:
+            $this->SetError($this->Mailer . $this->Lang("mailer_not_supported"));
+                $result = false;
+                break;
+        }
+
+        return $result;
+    }
+    
+    /**
+     * Sends mail using the $Sendmail program.  
+     * @access private
+     * @return bool
+     */
+    function SendmailSend($header, $body) {
+        if ($this->Sender != "")
+            $sendmail = sprintf("%s -oi -f %s -t", $this->Sendmail, $this->Sender);
+        else
+            $sendmail = sprintf("%s -oi -t", $this->Sendmail);
+
+        if(!@$mail = popen($sendmail, "w"))
+        {
+            $this->SetError($this->Lang("execute") . $this->Sendmail);
+            return false;
+        }
+
+        fputs($mail, $header);
+        fputs($mail, $body);
+        
+        $result = pclose($mail) >> 8 & 0xFF;
+        if($result != 0)
+        {
+            $this->SetError($this->Lang("execute") . $this->Sendmail);
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * Sends mail using the PHP mail() function.  
+     * @access private
+     * @return bool
+     */
+    function MailSend($header, $body) {
+        $to = "";
+        for($i = 0; $i < count($this->to); $i++)
+        {
+            if($i != 0) { $to .= ", "; }
+            $to .= $this->to[$i][0];
+        }
+
+        if ($this->Sender != "" && strlen(ini_get("safe_mode"))< 1)
+        {
+            $old_from = ini_get("sendmail_from");
+            ini_set("sendmail_from", $this->Sender);
+            $params = sprintf("-oi -f %s", $this->Sender);
+            $rt = @mail($to, $this->EncodeHeader($this->Subject), $body, 
+                        $header, $params);
+        }
+        else
+            $rt = @mail($to, $this->EncodeHeader($this->Subject), $body, $header);
+
+        if (isset($old_from))
+            ini_set("sendmail_from", $old_from);
+
+        if(!$rt)
+        {
+            $this->SetError($this->Lang("instantiate"));
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * Sends mail via SMTP using PhpSMTP (Author:
+     * Chris Ryan).  Returns bool.  Returns false if there is a
+     * bad MAIL FROM, RCPT, or DATA input.
+     * @access private
+     * @return bool
+     */
+    function SmtpSend($header, $body) {
+        include_once($this->PluginDir . "class.smtp.php");
+        $error = "";
+        $bad_rcpt = array();
+
+        if(!$this->SmtpConnect())
+            return false;
+
+        $smtp_from = ($this->Sender == "") ? $this->From : $this->Sender;
+        if(!$this->smtp->Mail($smtp_from))
+        {
+            $error = $this->Lang("from_failed") . $smtp_from;
+            $this->SetError($error);
+            $this->smtp->Reset();
+            return false;
+        }
+
+        // Attempt to send attach all recipients
+        for($i = 0; $i < count($this->to); $i++)
+        {
+            if(!$this->smtp->Recipient($this->to[$i][0]))
+                $bad_rcpt[] = $this->to[$i][0];
+        }
+        for($i = 0; $i < count($this->cc); $i++)
+        {
+            if(!$this->smtp->Recipient($this->cc[$i][0]))
+                $bad_rcpt[] = $this->cc[$i][0];
+        }
+        for($i = 0; $i < count($this->bcc); $i++)
+        {
+            if(!$this->smtp->Recipient($this->bcc[$i][0]))
+                $bad_rcpt[] = $this->bcc[$i][0];
+        }
+
+        if(count($bad_rcpt) > 0) // Create error message
+        {
+            for($i = 0; $i < count($bad_rcpt); $i++)
+            {
+                if($i != 0) { $error .= ", "; }
+                $error .= $bad_rcpt[$i];
+            }
+            $error = $this->Lang("recipients_failed") . $error;
+            $this->SetError($error);
+            $this->smtp->Reset();
+            return false;
+        }
+
+        if(!$this->smtp->Data($header . $body))
+        {
+            $this->SetError($this->Lang("data_not_accepted"));
+            $this->smtp->Reset();
+            return false;
+        }
+        if($this->SMTPKeepAlive == true)
+            $this->smtp->Reset();
+        else
+            $this->SmtpClose();
+
+        return true;
+    }
+
+    /**
+     * Initiates a connection to an SMTP server.  Returns false if the 
+     * operation failed.
+     * @access private
+     * @return bool
+     */
+    function SmtpConnect() {
+        if($this->smtp == NULL) { $this->smtp = new SMTP(); }
+
+        $this->smtp->do_debug = $this->SMTPDebug;
+        $hosts = explode(";", $this->Host);
+        $index = 0;
+        $connection = ($this->smtp->Connected()); 
+
+        // Retry while there is no connection
+        while($index < count($hosts) && $connection == false)
+        {
+            if(strstr($hosts[$index], ":"))
+                list($host, $port) = explode(":", $hosts[$index]);
+            else
+            {
+                $host = $hosts[$index];
+                $port = $this->Port;
+            }
+
+            if($this->smtp->Connect($host, $port, $this->Timeout))
+            {
+                if ($this->Helo != '')
+                    $this->smtp->Hello($this->Helo);
+                else
+                    $this->smtp->Hello($this->ServerHostname());
+        
+                if($this->SMTPAuth)
+                {
+                    if(!$this->smtp->Authenticate($this->Username, 
+                                                  $this->Password))
+                    {
+                        $this->SetError($this->Lang("authenticate"));
+                        $this->smtp->Reset();
+                        $connection = false;
+                    }
+                }
+                $connection = true;
+            }
+            $index++;
+        }
+        if(!$connection)
+            $this->SetError($this->Lang("connect_host"));
+
+        return $connection;
+    }
+
+    /**
+     * Closes the active SMTP session if one exists.
+     * @return void
+     */
+    function SmtpClose() {
+        if($this->smtp != NULL)
+        {
+            if($this->smtp->Connected())
+            {
+                $this->smtp->Quit();
+                $this->smtp->Close();
+            }
+        }
+    }
+
+    /**
+     * Sets the language for all class error messages.  Returns false 
+     * if it cannot load the language file.  The default language type
+     * is English.
+     * @param string $lang_type Type of language (e.g. Portuguese: "br")
+     * @param string $lang_path Path to the language file directory
+     * @access public
+     * @return bool
+     */
+    function SetLanguage($lang_type, $lang_path = "language/") {
+        if(file_exists($lang_path.'phpmailer.lang-'.$lang_type.'.php'))
+            include($lang_path.'phpmailer.lang-'.$lang_type.'.php');
+        else if(file_exists($lang_path.'phpmailer.lang-en.php'))
+            include($lang_path.'phpmailer.lang-en.php');
+        else
+        {
+            $this->SetError("Could not load language file");
+            return false;
+        }
+        $this->language = $PHPMAILER_LANG;
+    
+        return true;
+    }
+
+    /////////////////////////////////////////////////
+    // MESSAGE CREATION METHODS
+    /////////////////////////////////////////////////
+
+    /**
+     * Creates recipient headers.  
+     * @access private
+     * @return string
+     */
+    function AddrAppend($type, $addr) {
+        $addr_str = $type . ": ";
+        $addr_str .= $this->AddrFormat($addr[0]);
+        if(count($addr) > 1)
+        {
+            for($i = 1; $i < count($addr); $i++)
+                $addr_str .= ", " . $this->AddrFormat($addr[$i]);
+        }
+        $addr_str .= $this->LE;
+
+        return $addr_str;
+    }
+    
+    /**
+     * Formats an address correctly. 
+     * @access private
+     * @return string
+     */
+    function AddrFormat($addr) {
+        if(empty($addr[1]))
+            $formatted = $addr[0];
+        else
+        {
+            $formatted = $this->EncodeHeader($addr[1], 'phrase') . " <" . 
+                         $addr[0] . ">";
+        }
+
+        return $formatted;
+    }
+
+    /**
+     * Wraps message for use with mailers that do not
+     * automatically perform wrapping and for quoted-printable.
+     * Original written by philippe.  
+     * @access private
+     * @return string
+     */
+    function WrapText($message, $length, $qp_mode = false) {
+        $soft_break = ($qp_mode) ? sprintf(" =%s", $this->LE) : $this->LE;
+
+        $message = $this->FixEOL($message);
+        if (substr($message, -1) == $this->LE)
+            $message = substr($message, 0, -1);
+
+        $line = explode($this->LE, $message);
+        $message = "";
+        for ($i=0 ;$i < count($line); $i++)
+        {
+          $line_part = explode(" ", $line[$i]);
+          $buf = "";
+          for ($e = 0; $e<count($line_part); $e++)
+          {
+              $word = $line_part[$e];
+              if ($qp_mode and (strlen($word) > $length))
+              {
+                $space_left = $length - strlen($buf) - 1;
+                if ($e != 0)
+                {
+                    if ($space_left > 20)
+                    {
+                        $len = $space_left;
+                        if (substr($word, $len - 1, 1) == "=")
+                          $len--;
+                        elseif (substr($word, $len - 2, 1) == "=")
+                          $len -= 2;
+                        $part = substr($word, 0, $len);
+                        $word = substr($word, $len);
+                        $buf .= " " . $part;
+                        $message .= $buf . sprintf("=%s", $this->LE);
+                    }
+                    else
+                    {
+                        $message .= $buf . $soft_break;
+                    }
+                    $buf = "";
+                }
+                while (strlen($word) > 0)
+                {
+                    $len = $length;
+                    if (substr($word, $len - 1, 1) == "=")
+                        $len--;
+                    elseif (substr($word, $len - 2, 1) == "=")
+                        $len -= 2;
+                    $part = substr($word, 0, $len);
+                    $word = substr($word, $len);
+
+                    if (strlen($word) > 0)
+                        $message .= $part . sprintf("=%s", $this->LE);
+                    else
+                        $buf = $part;
+                }
+              }
+              else
+              {
+                $buf_o = $buf;
+                $buf .= ($e == 0) ? $word : (" " . $word); 
+
+                if (strlen($buf) > $length and $buf_o != "")
+                {
+                    $message .= $buf_o . $soft_break;
+                    $buf = $word;
+                }
+              }
+          }
+          $message .= $buf . $this->LE;
+        }
+
+        return $message;
+    }
+    
+    /**
+     * Set the body wrapping.
+     * @access private
+     * @return void
+     */
+    function SetWordWrap() {
+        if($this->WordWrap < 1)
+            return;
+            
+        switch($this->message_type)
+        {
+           case "alt":
+              // fall through
+           case "alt_attachments":
+              $this->AltBody = $this->WrapText($this->AltBody, $this->WordWrap);
+              break;
+           default:
+              $this->Body = $this->WrapText($this->Body, $this->WordWrap);
+              break;
+        }
+    }
+
+    /**
+     * Assembles message header.  
+     * @access private
+     * @return string
+     */
+    function CreateHeader() {
+        $result = "";
+        
+        // Set the boundaries
+        $uniq_id = md5(uniqid(time()));
+        $this->boundary[1] = "b1_" . $uniq_id;
+        $this->boundary[2] = "b2_" . $uniq_id;
+
+        $result .= $this->HeaderLine("Date", $this->RFCDate());
+        if($this->Sender == "")
+            $result .= $this->HeaderLine("Return-Path", trim($this->From));
+        else
+            $result .= $this->HeaderLine("Return-Path", trim($this->Sender));
+        
+        // To be created automatically by mail()
+        if($this->Mailer != "mail")
+        {
+            if(count($this->to) > 0)
+                $result .= $this->AddrAppend("To", $this->to);
+            else if (count($this->cc) == 0)
+                $result .= $this->HeaderLine("To", "undisclosed-recipients:;");
+            if(count($this->cc) > 0)
+                $result .= $this->AddrAppend("Cc", $this->cc);
+        }
+
+        $from = array();
+        $from[0][0] = trim($this->From);
+        $from[0][1] = $this->FromName;
+        $result .= $this->AddrAppend("From", $from); 
+
+        // sendmail and mail() extract Bcc from the header before sending
+        if((($this->Mailer == "sendmail") || ($this->Mailer == "mail")) && (count($this->bcc) > 0))
+            $result .= $this->AddrAppend("Bcc", $this->bcc);
+
+        if(count($this->ReplyTo) > 0)
+            $result .= $this->AddrAppend("Reply-to", $this->ReplyTo);
+
+        // mail() sets the subject itself
+        if($this->Mailer != "mail")
+            $result .= $this->HeaderLine("Subject", $this->EncodeHeader(trim($this->Subject)));
+
+        $result .= sprintf("Message-ID: <%s@%s>%s", $uniq_id, $this->ServerHostname(), $this->LE);
+        $result .= $this->HeaderLine("X-Priority", $this->Priority);
+        $result .= $this->HeaderLine("X-Mailer", "PHPMailer [version " . $this->Version . "]");
+        
+        if($this->ConfirmReadingTo != "")
+        {
+            $result .= $this->HeaderLine("Disposition-Notification-To", 
+                       "<" . trim($this->ConfirmReadingTo) . ">");
+        }
+
+        // Add custom headers
+        for($index = 0; $index < count($this->CustomHeader); $index++)
+        {
+            $result .= $this->HeaderLine(trim($this->CustomHeader[$index][0]), 
+                       $this->EncodeHeader(trim($this->CustomHeader[$index][1])));
+        }
+        $result .= $this->HeaderLine("MIME-Version", "1.0");
+
+        switch($this->message_type)
+        {
+            case "plain":
+                $result .= $this->HeaderLine("Content-Transfer-Encoding", $this->Encoding);
+                $result .= sprintf("Content-Type: %s; charset=\"%s\"",
+                                    $this->ContentType, $this->CharSet);
+                break;
+            case "attachments":
+                // fall through
+            case "alt_attachments":
+                if($this->InlineImageExists())
+                {
+                    $result .= sprintf("Content-Type: %s;%s\ttype=\"text/html\";%s\tboundary=\"%s\"%s", 
+                                    "multipart/related", $this->LE, $this->LE, 
+                                    $this->boundary[1], $this->LE);
+                }
+                else
+                {
+                    $result .= $this->HeaderLine("Content-Type", "multipart/mixed;");
+                    $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"');
+                }
+                break;
+            case "alt":
+                $result .= $this->HeaderLine("Content-Type", "multipart/alternative;");
+                $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"');
+                break;
+        }
+
+        if($this->Mailer != "mail")
+            $result .= $this->LE.$this->LE;
+
+        return $result;
+    }
+
+    /**
+     * Assembles the message body.  Returns an empty string on failure.
+     * @access private
+     * @return string
+     */
+    function CreateBody() {
+        $result = "";
+
+        $this->SetWordWrap();
+
+        switch($this->message_type)
+        {
+            case "alt":
+                $result .= $this->GetBoundary($this->boundary[1], "", 
+                                              "text/plain", "");
+                $result .= $this->EncodeString($this->AltBody, $this->Encoding);
+                $result .= $this->LE.$this->LE;
+                $result .= $this->GetBoundary($this->boundary[1], "", 
+                                              "text/html", "");
+                
+                $result .= $this->EncodeString($this->Body, $this->Encoding);
+                $result .= $this->LE.$this->LE;
+    
+                $result .= $this->EndBoundary($this->boundary[1]);
+                break;
+            case "plain":
+                $result .= $this->EncodeString($this->Body, $this->Encoding);
+                break;
+            case "attachments":
+                $result .= $this->GetBoundary($this->boundary[1], "", "", "");
+                $result .= $this->EncodeString($this->Body, $this->Encoding);
+                $result .= $this->LE;
+     
+                $result .= $this->AttachAll();
+                break;
+            case "alt_attachments":
+                $result .= sprintf("--%s%s", $this->boundary[1], $this->LE);
+                $result .= sprintf("Content-Type: %s;%s" .
+                                   "\tboundary=\"%s\"%s",
+                                   "multipart/alternative", $this->LE, 
+                                   $this->boundary[2], $this->LE.$this->LE);
+    
+                // Create text body
+                $result .= $this->GetBoundary($this->boundary[2], "", 
+                                              "text/plain", "") . $this->LE;
+
+                $result .= $this->EncodeString($this->AltBody, $this->Encoding);
+                $result .= $this->LE.$this->LE;
+    
+                // Create the HTML body
+                $result .= $this->GetBoundary($this->boundary[2], "", 
+                                              "text/html", "") . $this->LE;
+    
+                $result .= $this->EncodeString($this->Body, $this->Encoding);
+                $result .= $this->LE.$this->LE;
+
+                $result .= $this->EndBoundary($this->boundary[2]);
+                
+                $result .= $this->AttachAll();
+                break;
+        }
+        if($this->IsError())
+            $result = "";
+
+        return $result;
+    }
+
+    /**
+     * Returns the start of a message boundary.
+     * @access private
+     */
+    function GetBoundary($boundary, $charSet, $contentType, $encoding) {
+        $result = "";
+        if($charSet == "") { $charSet = $this->CharSet; }
+        if($contentType == "") { $contentType = $this->ContentType; }
+        if($encoding == "") { $encoding = $this->Encoding; }
+
+        $result .= $this->TextLine("--" . $boundary);
+        $result .= sprintf("Content-Type: %s; charset = \"%s\"", 
+                            $contentType, $charSet);
+        $result .= $this->LE;
+        $result .= $this->HeaderLine("Content-Transfer-Encoding", $encoding);
+        $result .= $this->LE;
+       
+        return $result;
+    }
+    
+    /**
+     * Returns the end of a message boundary.
+     * @access private
+     */
+    function EndBoundary($boundary) {
+        return $this->LE . "--" . $boundary . "--" . $this->LE; 
+    }
+    
+    /**
+     * Sets the message type.
+     * @access private
+     * @return void
+     */
+    function SetMessageType() {
+        if(count($this->attachment) < 1 && strlen($this->AltBody) < 1)
+            $this->message_type = "plain";
+        else
+        {
+            if(count($this->attachment) > 0)
+                $this->message_type = "attachments";
+            if(strlen($this->AltBody) > 0 && count($this->attachment) < 1)
+                $this->message_type = "alt";
+            if(strlen($this->AltBody) > 0 && count($this->attachment) > 0)
+                $this->message_type = "alt_attachments";
+        }
+    }
+
+    /**
+     * Returns a formatted header line.
+     * @access private
+     * @return string
+     */
+    function HeaderLine($name, $value) {
+        return $name . ": " . $value . $this->LE;
+    }
+
+    /**
+     * Returns a formatted mail line.
+     * @access private
+     * @return string
+     */
+    function TextLine($value) {
+        return $value . $this->LE;
+    }
+
+    /////////////////////////////////////////////////
+    // ATTACHMENT METHODS
+    /////////////////////////////////////////////////
+
+    /**
+     * Adds an attachment from a path on the filesystem.
+     * Returns false if the file could not be found
+     * or accessed.
+     * @param string $path Path to the attachment.
+     * @param string $name Overrides the attachment name.
+     * @param string $encoding File encoding (see $Encoding).
+     * @param string $type File extension (MIME) type.
+     * @return bool
+     */
+    function AddAttachment($path, $name = "", $encoding = "base64", 
+                           $type = "application/octet-stream") {
+        if(!@is_file($path))
+        {
+            $this->SetError($this->Lang("file_access") . $path);
+            return false;
+        }
+
+        $filename = basename($path);
+        if($name == "")
+            $name = $filename;
+
+        $cur = count($this->attachment);
+        $this->attachment[$cur][0] = $path;
+        $this->attachment[$cur][1] = $filename;
+        $this->attachment[$cur][2] = $name;
+        $this->attachment[$cur][3] = $encoding;
+        $this->attachment[$cur][4] = $type;
+        $this->attachment[$cur][5] = false; // isStringAttachment
+        $this->attachment[$cur][6] = "attachment";
+        $this->attachment[$cur][7] = 0;
+
+        return true;
+    }
+
+    /**
+     * Attaches all fs, string, and binary attachments to the message.
+     * Returns an empty string on failure.
+     * @access private
+     * @return string
+     */
+    function AttachAll() {
+        // Return text of body
+        $mime = array();
+
+        // Add all attachments
+        for($i = 0; $i < count($this->attachment); $i++)
+        {
+            // Check for string attachment
+            $bString = $this->attachment[$i][5];
+            if ($bString)
+                $string = $this->attachment[$i][0];
+            else
+                $path = $this->attachment[$i][0];
+
+            $filename    = $this->attachment[$i][1];
+            $name        = $this->attachment[$i][2];
+            $encoding    = $this->attachment[$i][3];
+            $type        = $this->attachment[$i][4];
+            $disposition = $this->attachment[$i][6];
+            $cid         = $this->attachment[$i][7];
+            
+            $mime[] = sprintf("--%s%s", $this->boundary[1], $this->LE);
+            $mime[] = sprintf("Content-Type: %s; name=\"%s\"%s", $type, $name, $this->LE);
+            $mime[] = sprintf("Content-Transfer-Encoding: %s%s", $encoding, $this->LE);
+
+            if($disposition == "inline")
+                $mime[] = sprintf("Content-ID: <%s>%s", $cid, $this->LE);
+
+            $mime[] = sprintf("Content-Disposition: %s; filename=\"%s\"%s", 
+                              $disposition, $name, $this->LE.$this->LE);
+
+            // Encode as string attachment
+            if($bString)
+            {
+                $mime[] = $this->EncodeString($string, $encoding);
+                if($this->IsError()) { return ""; }
+                $mime[] = $this->LE.$this->LE;
+            }
+            else
+            {
+                $mime[] = $this->EncodeFile($path, $encoding);                
+                if($this->IsError()) { return ""; }
+                $mime[] = $this->LE.$this->LE;
+            }
+        }
+
+        $mime[] = sprintf("--%s--%s", $this->boundary[1], $this->LE);
+
+        return join("", $mime);
+    }
+    
+    /**
+     * Encodes attachment in requested format.  Returns an
+     * empty string on failure.
+     * @access private
+     * @return string
+     */
+    function EncodeFile ($path, $encoding = "base64") {
+        if(!@$fd = fopen($path, "rb"))
+        {
+            $this->SetError($this->Lang("file_open") . $path);
+            return "";
+        }
+        $magic_quotes = get_magic_quotes_runtime();
+        set_magic_quotes_runtime(0);
+        $file_buffer = fread($fd, filesize($path));
+        $file_buffer = $this->EncodeString($file_buffer, $encoding);
+        fclose($fd);
+        set_magic_quotes_runtime($magic_quotes);
+
+        return $file_buffer;
+    }
+
+    /**
+     * Encodes string to requested format. Returns an
+     * empty string on failure.
+     * @access private
+     * @return string
+     */
+    function EncodeString ($str, $encoding = "base64") {
+        $encoded = "";
+        switch(strtolower($encoding)) {
+          case "base64":
+              // chunk_split is found in PHP >= 3.0.6
+              $encoded = chunk_split(base64_encode($str), 76, $this->LE);
+              break;
+          case "7bit":
+          case "8bit":
+              $encoded = $this->FixEOL($str);
+              if (substr($encoded, -(strlen($this->LE))) != $this->LE)
+                $encoded .= $this->LE;
+              break;
+          case "binary":
+              $encoded = $str;
+              break;
+          case "quoted-printable":
+              $encoded = $this->EncodeQP($str);
+              break;
+          default:
+              $this->SetError($this->Lang("encoding") . $encoding);
+              break;
+        }
+        return $encoded;
+    }
+
+    /**
+     * Encode a header string to best of Q, B, quoted or none.  
+     * @access private
+     * @return string
+     */
+    function EncodeHeader ($str, $position = 'text') {
+      $x = 0;
+      
+      switch (strtolower($position)) {
+        case 'phrase':
+          if (!preg_match('/[\200-\377]/', $str)) {
+            // Can't use addslashes as we don't know what value has magic_quotes_sybase.
+            $encoded = addcslashes($str, "\0..\37\177\\\"");
+
+            if (($str == $encoded) && !preg_match('/[^A-Za-z0-9!#$%&\'*+\/=?^_`{|}~ -]/', $str))
+              return ($encoded);
+            else
+              return ("\"$encoded\"");
+          }
+          $x = preg_match_all('/[^\040\041\043-\133\135-\176]/', $str, $matches);
+          break;
+        case 'comment':
+          $x = preg_match_all('/[()"]/', $str, $matches);
+          // Fall-through
+        case 'text':
+        default:
+          $x += preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/', $str, $matches);
+          break;
+      }
+
+      if ($x == 0)
+        return ($str);
+
+      $maxlen = 75 - 7 - strlen($this->CharSet);
+      // Try to select the encoding which should produce the shortest output
+      if (strlen($str)/3 < $x) {
+        $encoding = 'B';
+        $encoded = base64_encode($str);
+        $maxlen -= $maxlen % 4;
+        $encoded = trim(chunk_split($encoded, $maxlen, "\n"));
+      } else {
+        $encoding = 'Q';
+        $encoded = $this->EncodeQ($str, $position);
+        $encoded = $this->WrapText($encoded, $maxlen, true);
+        $encoded = str_replace("=".$this->LE, "\n", trim($encoded));
+      }
+
+      $encoded = preg_replace('/^(.*)$/m', " =?".$this->CharSet."?$encoding?\\1?=", $encoded);
+      $encoded = trim(str_replace("\n", $this->LE, $encoded));
+      
+      return $encoded;
+    }
+    
+    /**
+     * Encode string to quoted-printable.  
+     * @access private
+     * @return string
+     */
+    function EncodeQP ($str) {
+        $encoded = $this->FixEOL($str);
+        if (substr($encoded, -(strlen($this->LE))) != $this->LE)
+            $encoded .= $this->LE;
+
+        // Replace every high ascii, control and = characters
+        $encoded = preg_replace('/([\000-\010\013\014\016-\037\075\177-\377])/e',
+                  "'='.sprintf('%02X', ord('\\1'))", $encoded);
+        // Replace every spaces and tabs when it's the last character on a line
+        $encoded = preg_replace("/([\011\040])".$this->LE."/e",
+                  "'='.sprintf('%02X', ord('\\1')).'".$this->LE."'", $encoded);
+
+        // Maximum line length of 76 characters before CRLF (74 + space + '=')
+        $encoded = $this->WrapText($encoded, 74, true);
+
+        return $encoded;
+    }
+
+    /**
+     * Encode string to q encoding.  
+     * @access private
+     * @return string
+     */
+    function EncodeQ ($str, $position = "text") {
+        // There should not be any EOL in the string
+        $encoded = preg_replace("[\r\n]", "", $str);
+
+        switch (strtolower($position)) {
+          case "phrase":
+            $encoded = preg_replace("/([^A-Za-z0-9!*+\/ -])/e", "'='.sprintf('%02X', ord('\\1'))", $encoded);
+            break;
+          case "comment":
+            $encoded = preg_replace("/([\(\)\"])/e", "'='.sprintf('%02X', ord('\\1'))", $encoded);
+          case "text":
+          default:
+            // Replace every high ascii, control =, ? and _ characters
+            $encoded = preg_replace('/([\000-\011\013\014\016-\037\075\077\137\177-\377])/e',
+                  "'='.sprintf('%02X', ord('\\1'))", $encoded);
+            break;
+        }
+        
+        // Replace every spaces to _ (more readable than =20)
+        $encoded = str_replace(" ", "_", $encoded);
+
+        return $encoded;
+    }
+
+    /**
+     * Adds a string or binary attachment (non-filesystem) to the list.
+     * This method can be used to attach ascii or binary data,
+     * such as a BLOB record from a database.
+     * @param string $string String attachment data.
+     * @param string $filename Name of the attachment.
+     * @param string $encoding File encoding (see $Encoding).
+     * @param string $type File extension (MIME) type.
+     * @return void
+     */
+    function AddStringAttachment($string, $filename, $encoding = "base64", 
+                                 $type = "application/octet-stream") {
+        // Append to $attachment array
+        $cur = count($this->attachment);
+        $this->attachment[$cur][0] = $string;
+        $this->attachment[$cur][1] = $filename;
+        $this->attachment[$cur][2] = $filename;
+        $this->attachment[$cur][3] = $encoding;
+        $this->attachment[$cur][4] = $type;
+        $this->attachment[$cur][5] = true; // isString
+        $this->attachment[$cur][6] = "attachment";
+        $this->attachment[$cur][7] = 0;
+    }
+    
+    /**
+     * Adds an embedded attachment.  This can include images, sounds, and 
+     * just about any other document.  Make sure to set the $type to an 
+     * image type.  For JPEG images use "image/jpeg" and for GIF images 
+     * use "image/gif".
+     * @param string $path Path to the attachment.
+     * @param string $cid Content ID of the attachment.  Use this to identify 
+     *        the Id for accessing the image in an HTML form.
+     * @param string $name Overrides the attachment name.
+     * @param string $encoding File encoding (see $Encoding).
+     * @param string $type File extension (MIME) type.  
+     * @return bool
+     */
+    function AddEmbeddedImage($path, $cid, $name = "", $encoding = "base64", 
+                              $type = "application/octet-stream") {
+    
+        if(!@is_file($path))
+        {
+            $this->SetError($this->Lang("file_access") . $path);
+            return false;
+        }
+
+        $filename = basename($path);
+        if($name == "")
+            $name = $filename;
+
+        // Append to $attachment array
+        $cur = count($this->attachment);
+        $this->attachment[$cur][0] = $path;
+        $this->attachment[$cur][1] = $filename;
+        $this->attachment[$cur][2] = $name;
+        $this->attachment[$cur][3] = $encoding;
+        $this->attachment[$cur][4] = $type;
+        $this->attachment[$cur][5] = false; // isStringAttachment
+        $this->attachment[$cur][6] = "inline";
+        $this->attachment[$cur][7] = $cid;
+    
+        return true;
+    }
+    
+    /**
+     * Returns true if an inline attachment is present.
+     * @access private
+     * @return bool
+     */
+    function InlineImageExists() {
+        $result = false;
+        for($i = 0; $i < count($this->attachment); $i++)
+        {
+            if($this->attachment[$i][6] == "inline")
+            {
+                $result = true;
+                break;
+            }
+        }
+        
+        return $result;
+    }
+
+    /////////////////////////////////////////////////
+    // MESSAGE RESET METHODS
+    /////////////////////////////////////////////////
+
+    /**
+     * Clears all recipients assigned in the TO array.  Returns void.
+     * @return void
+     */
+    function ClearAddresses() {
+        $this->to = array();
+    }
+
+    /**
+     * Clears all recipients assigned in the CC array.  Returns void.
+     * @return void
+     */
+    function ClearCCs() {
+        $this->cc = array();
+    }
+
+    /**
+     * Clears all recipients assigned in the BCC array.  Returns void.
+     * @return void
+     */
+    function ClearBCCs() {
+        $this->bcc = array();
+    }
+
+    /**
+     * Clears all recipients assigned in the ReplyTo array.  Returns void.
+     * @return void
+     */
+    function ClearReplyTos() {
+        $this->ReplyTo = array();
+    }
+
+    /**
+     * Clears all recipients assigned in the TO, CC and BCC
+     * array.  Returns void.
+     * @return void
+     */
+    function ClearAllRecipients() {
+        $this->to = array();
+        $this->cc = array();
+        $this->bcc = array();
+    }
+
+    /**
+     * Clears all previously set filesystem, string, and binary
+     * attachments.  Returns void.
+     * @return void
+     */
+    function ClearAttachments() {
+        $this->attachment = array();
+    }
+
+    /**
+     * Clears all custom headers.  Returns void.
+     * @return void
+     */
+    function ClearCustomHeaders() {
+        $this->CustomHeader = array();
+    }
+
+
+    /////////////////////////////////////////////////
+    // MISCELLANEOUS METHODS
+    /////////////////////////////////////////////////
+
+    /**
+     * Adds the error message to the error container.
+     * Returns void.
+     * @access private
+     * @return void
+     */
+    function SetError($msg) {
+        $this->error_count++;
+        $this->ErrorInfo = $msg;
+    }
+
+    /**
+     * Returns the proper RFC 822 formatted date. 
+     * @access private
+     * @return string
+     */
+    function RFCDate() {
+        $tz = date("Z");
+        $tzs = ($tz < 0) ? "-" : "+";
+        $tz = abs($tz);
+        $tz = ($tz/3600)*100 + ($tz%3600)/60;
+        $result = sprintf("%s %s%04d", date("D, j M Y H:i:s"), $tzs, $tz);
+
+        return $result;
+    }
+    
+    /**
+     * Returns the appropriate server variable.  Should work with both 
+     * PHP 4.1.0+ as well as older versions.  Returns an empty string 
+     * if nothing is found.
+     * @access private
+     * @return mixed
+     */
+    function ServerVar($varName) {
+        global $HTTP_SERVER_VARS;
+        global $HTTP_ENV_VARS;
+
+        if(!isset($_SERVER))
+        {
+            $_SERVER = $HTTP_SERVER_VARS;
+            if(!isset($_SERVER["REMOTE_ADDR"]))
+                $_SERVER = $HTTP_ENV_VARS; // must be Apache
+        }
+        
+        if(isset($_SERVER[$varName]))
+            return $_SERVER[$varName];
+        else
+            return "";
+    }
+
+    /**
+     * Returns the server hostname or 'localhost.localdomain' if unknown.
+     * @access private
+     * @return string
+     */
+    function ServerHostname() {
+        if ($this->Hostname != "")
+            $result = $this->Hostname;
+        elseif ($this->ServerVar('SERVER_NAME') != "")
+            $result = $this->ServerVar('SERVER_NAME');
+        else
+            $result = "localhost.localdomain";
+
+        return $result;
+    }
+
+    /**
+     * Returns a message in the appropriate language.
+     * @access private
+     * @return string
+     */
+    function Lang($key) {
+        if(count($this->language) < 1)
+            $this->SetLanguage("en"); // set the default language
+    
+        if(isset($this->language[$key]))
+            return $this->language[$key];
+        else
+            return "Language string failed to load: " . $key;
+    }
+    
+    /**
+     * Returns true if an error occurred.
+     * @return bool
+     */
+    function IsError() {
+        return ($this->error_count > 0);
+    }
+
+    /**
+     * Changes every end of line from CR or LF to CRLF.  
+     * @access private
+     * @return string
+     */
+    function FixEOL($str) {
+        $str = str_replace("\r\n", "\n", $str);
+        $str = str_replace("\r", "\n", $str);
+        $str = str_replace("\n", $this->LE, $str);
+        return $str;
+    }
+
+    /**
+     * Adds a custom header. 
+     * @return void
+     */
+    function AddCustomHeader($custom_header) {
+        $this->CustomHeader[] = explode(":", $custom_header, 2);
+    }
+}
+
+?>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/class.smtp.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/class.smtp.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/class.smtp.php	(revision 76)
@@ -0,0 +1,1045 @@
+<?php
+////////////////////////////////////////////////////
+// SMTP - PHP SMTP class
+//
+// Version 1.02
+//
+// Define an SMTP class that can be used to connect
+// and communicate with any SMTP server. It implements
+// all the SMTP functions defined in RFC821 except TURN.
+//
+// Author: Chris Ryan
+//
+// License: LGPL, see LICENSE
+////////////////////////////////////////////////////
+
+/**
+ * SMTP is rfc 821 compliant and implements all the rfc 821 SMTP
+ * commands except TURN which will always return a not implemented
+ * error. SMTP also provides some utility methods for sending mail
+ * to an SMTP server.
+ * @package PHPMailer
+ * @author Chris Ryan
+ */
+class SMTP
+{
+    /**
+     *  SMTP server port
+     *  @var int
+     */
+    var $SMTP_PORT = 25;
+    
+    /**
+     *  SMTP reply line ending
+     *  @var string
+     */
+    var $CRLF = "\r\n";
+    
+    /**
+     *  Sets whether debugging is turned on
+     *  @var bool
+     */
+    var $do_debug;       # the level of debug to perform
+
+    /**#@+
+     * @access private
+     */
+    var $smtp_conn;      # the socket to the server
+    var $error;          # error if any on the last call
+    var $helo_rply;      # the reply the server sent to us for HELO
+    /**#@-*/
+
+    /**
+     * Initialize the class so that the data is in a known state.
+     * @access public
+     * @return void
+     */
+    function SMTP() {
+        $this->smtp_conn = 0;
+        $this->error = null;
+        $this->helo_rply = null;
+
+        $this->do_debug = 0;
+    }
+
+    /*************************************************************
+     *                    CONNECTION FUNCTIONS                  *
+     ***********************************************************/
+
+    /**
+     * Connect to the server specified on the port specified.
+     * If the port is not specified use the default SMTP_PORT.
+     * If tval is specified then a connection will try and be
+     * established with the server for that number of seconds.
+     * If tval is not specified the default is 30 seconds to
+     * try on the connection.
+     *
+     * SMTP CODE SUCCESS: 220
+     * SMTP CODE FAILURE: 421
+     * @access public
+     * @return bool
+     */
+    function Connect($host,$port=0,$tval=30) {
+        # set the error val to null so there is no confusion
+        $this->error = null;
+
+        # make sure we are __not__ connected
+        if($this->connected()) {
+            # ok we are connected! what should we do?
+            # for now we will just give an error saying we
+            # are already connected
+            $this->error =
+                array("error" => "Already connected to a server");
+            return false;
+        }
+
+        if(empty($port)) {
+            $port = $this->SMTP_PORT;
+        }
+
+        #connect to the smtp server
+        $this->smtp_conn = fsockopen($host,    # the host of the server
+                                     $port,    # the port to use
+                                     $errno,   # error number if any
+                                     $errstr,  # error message if any
+                                     $tval);   # give up after ? secs
+        # verify we connected properly
+        if(empty($this->smtp_conn)) {
+            $this->error = array("error" => "Failed to connect to server",
+                                 "errno" => $errno,
+                                 "errstr" => $errstr);
+            if($this->do_debug >= 1) {
+                echo "SMTP -> ERROR: " . $this->error["error"] .
+                         ": $errstr ($errno)" . $this->CRLF;
+            }
+            return false;
+        }
+
+        # sometimes the SMTP server takes a little longer to respond
+        # so we will give it a longer timeout for the first read
+        // Windows still does not have support for this timeout function
+        if(substr(PHP_OS, 0, 3) != "WIN")
+           socket_set_timeout($this->smtp_conn, $tval, 0);
+
+        # get any announcement stuff
+        $announce = $this->get_lines();
+
+        # set the timeout  of any socket functions at 1/10 of a second
+        //if(function_exists("socket_set_timeout"))
+        //   socket_set_timeout($this->smtp_conn, 0, 100000);
+
+        if($this->do_debug >= 2) {
+            echo "SMTP -> FROM SERVER:" . $this->CRLF . $announce;
+        }
+
+        return true;
+    }
+
+    /**
+     * Performs SMTP authentication.  Must be run after running the
+     * Hello() method.  Returns true if successfully authenticated.
+     * @access public
+     * @return bool
+     */
+    function Authenticate($username, $password) {
+        // Start authentication
+        fputs($this->smtp_conn,"AUTH LOGIN" . $this->CRLF);
+
+        $rply = $this->get_lines();
+        $code = substr($rply,0,3);
+
+        if($code != 334) {
+            $this->error =
+                array("error" => "AUTH not accepted from server",
+                      "smtp_code" => $code,
+                      "smtp_msg" => substr($rply,4));
+            if($this->do_debug >= 1) {
+                echo "SMTP -> ERROR: " . $this->error["error"] .
+                         ": " . $rply . $this->CRLF;
+            }
+            return false;
+        }
+
+        // Send encoded username
+        fputs($this->smtp_conn, base64_encode($username) . $this->CRLF);
+
+        $rply = $this->get_lines();
+        $code = substr($rply,0,3);
+
+        if($code != 334) {
+            $this->error =
+                array("error" => "Username not accepted from server",
+                      "smtp_code" => $code,
+                      "smtp_msg" => substr($rply,4));
+            if($this->do_debug >= 1) {
+                echo "SMTP -> ERROR: " . $this->error["error"] .
+                         ": " . $rply . $this->CRLF;
+            }
+            return false;
+        }
+
+        // Send encoded password
+        fputs($this->smtp_conn, base64_encode($password) . $this->CRLF);
+
+        $rply = $this->get_lines();
+        $code = substr($rply,0,3);
+
+        if($code != 235) {
+            $this->error =
+                array("error" => "Password not accepted from server",
+                      "smtp_code" => $code,
+                      "smtp_msg" => substr($rply,4));
+            if($this->do_debug >= 1) {
+                echo "SMTP -> ERROR: " . $this->error["error"] .
+                         ": " . $rply . $this->CRLF;
+            }
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * Returns true if connected to a server otherwise false
+     * @access private
+     * @return bool
+     */
+    function Connected() {
+        if(!empty($this->smtp_conn)) {
+            $sock_status = socket_get_status($this->smtp_conn);
+            if($sock_status["eof"]) {
+                # hmm this is an odd situation... the socket is
+                # valid but we aren't connected anymore
+                if($this->do_debug >= 1) {
+                    echo "SMTP -> NOTICE:" . $this->CRLF .
+                         "EOF caught while checking if connected";
+                }
+                $this->Close();
+                return false;
+            }
+            return true; # everything looks good
+        }
+        return false;
+    }
+
+    /**
+     * Closes the socket and cleans up the state of the class.
+     * It is not considered good to use this function without
+     * first trying to use QUIT.
+     * @access public
+     * @return void
+     */
+    function Close() {
+        $this->error = null; # so there is no confusion
+        $this->helo_rply = null;
+        if(!empty($this->smtp_conn)) {
+            # close the connection and cleanup
+            fclose($this->smtp_conn);
+            $this->smtp_conn = 0;
+        }
+    }
+
+
+    /***************************************************************
+     *                        SMTP COMMANDS                       *
+     *************************************************************/
+
+    /**
+     * Issues a data command and sends the msg_data to the server
+     * finializing the mail transaction. $msg_data is the message
+     * that is to be send with the headers. Each header needs to be
+     * on a single line followed by a <CRLF> with the message headers
+     * and the message body being seperated by and additional <CRLF>.
+     *
+     * Implements rfc 821: DATA <CRLF>
+     *
+     * SMTP CODE INTERMEDIATE: 354
+     *     [data]
+     *     <CRLF>.<CRLF>
+     *     SMTP CODE SUCCESS: 250
+     *     SMTP CODE FAILURE: 552,554,451,452
+     * SMTP CODE FAILURE: 451,554
+     * SMTP CODE ERROR  : 500,501,503,421
+     * @access public
+     * @return bool
+     */
+    function Data($msg_data) {
+        $this->error = null; # so no confusion is caused
+
+        if(!$this->connected()) {
+            $this->error = array(
+                    "error" => "Called Data() without being connected");
+            return false;
+        }
+
+        fputs($this->smtp_conn,"DATA" . $this->CRLF);
+
+        $rply = $this->get_lines();
+        $code = substr($rply,0,3);
+
+        if($this->do_debug >= 2) {
+            echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+        }
+
+        if($code != 354) {
+            $this->error =
+                array("error" => "DATA command not accepted from server",
+                      "smtp_code" => $code,
+                      "smtp_msg" => substr($rply,4));
+            if($this->do_debug >= 1) {
+                echo "SMTP -> ERROR: " . $this->error["error"] .
+                         ": " . $rply . $this->CRLF;
+            }
+            return false;
+        }
+
+        # the server is ready to accept data!
+        # according to rfc 821 we should not send more than 1000
+        # including the CRLF
+        # characters on a single line so we will break the data up
+        # into lines by \r and/or \n then if needed we will break
+        # each of those into smaller lines to fit within the limit.
+        # in addition we will be looking for lines that start with
+        # a period '.' and append and additional period '.' to that
+        # line. NOTE: this does not count towards are limit.
+
+        # normalize the line breaks so we know the explode works
+        $msg_data = str_replace("\r\n","\n",$msg_data);
+        $msg_data = str_replace("\r","\n",$msg_data);
+        $lines = explode("\n",$msg_data);
+
+        # we need to find a good way to determine is headers are
+        # in the msg_data or if it is a straight msg body
+        # currently I'm assuming rfc 822 definitions of msg headers
+        # and if the first field of the first line (':' sperated)
+        # does not contain a space then it _should_ be a header
+        # and we can process all lines before a blank "" line as
+        # headers.
+        $field = substr($lines[0],0,strpos($lines[0],":"));
+        $in_headers = false;
+        if(!empty($field) && !strstr($field," ")) {
+            $in_headers = true;
+        }
+
+        $max_line_length = 998; # used below; set here for ease in change
+
+        while(list(,$line) = @each($lines)) {
+            $lines_out = null;
+            if($line == "" && $in_headers) {
+                $in_headers = false;
+            }
+            # ok we need to break this line up into several
+            # smaller lines
+            while(strlen($line) > $max_line_length) {
+                $pos = strrpos(substr($line,0,$max_line_length)," ");
+
+                # Patch to fix DOS attack
+                if(!$pos) {
+                    $pos = $max_line_length - 1;
+                }
+
+                $lines_out[] = substr($line,0,$pos);
+                $line = substr($line,$pos + 1);
+                # if we are processing headers we need to
+                # add a LWSP-char to the front of the new line
+                # rfc 822 on long msg headers
+                if($in_headers) {
+                    $line = "\t" . $line;
+                }
+            }
+            $lines_out[] = $line;
+
+            # now send the lines to the server
+            while(list(,$line_out) = @each($lines_out)) {
+                if(strlen($line_out) > 0)
+                {
+                    if(substr($line_out, 0, 1) == ".") {
+                        $line_out = "." . $line_out;
+                    }
+                }
+                fputs($this->smtp_conn,$line_out . $this->CRLF);
+            }
+        }
+
+        # ok all the message data has been sent so lets get this
+        # over with aleady
+        fputs($this->smtp_conn, $this->CRLF . "." . $this->CRLF);
+
+        $rply = $this->get_lines();
+        $code = substr($rply,0,3);
+
+        if($this->do_debug >= 2) {
+            echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+        }
+
+        if($code != 250) {
+            $this->error =
+                array("error" => "DATA not accepted from server",
+                      "smtp_code" => $code,
+                      "smtp_msg" => substr($rply,4));
+            if($this->do_debug >= 1) {
+                echo "SMTP -> ERROR: " . $this->error["error"] .
+                         ": " . $rply . $this->CRLF;
+            }
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Expand takes the name and asks the server to list all the
+     * people who are members of the _list_. Expand will return
+     * back and array of the result or false if an error occurs.
+     * Each value in the array returned has the format of:
+     *     [ <full-name> <sp> ] <path>
+     * The definition of <path> is defined in rfc 821
+     *
+     * Implements rfc 821: EXPN <SP> <string> <CRLF>
+     *
+     * SMTP CODE SUCCESS: 250
+     * SMTP CODE FAILURE: 550
+     * SMTP CODE ERROR  : 500,501,502,504,421
+     * @access public
+     * @return string array
+     */
+    function Expand($name) {
+        $this->error = null; # so no confusion is caused
+
+        if(!$this->connected()) {
+            $this->error = array(
+                    "error" => "Called Expand() without being connected");
+            return false;
+        }
+
+        fputs($this->smtp_conn,"EXPN " . $name . $this->CRLF);
+
+        $rply = $this->get_lines();
+        $code = substr($rply,0,3);
+
+        if($this->do_debug >= 2) {
+            echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+        }
+
+        if($code != 250) {
+            $this->error =
+                array("error" => "EXPN not accepted from server",
+                      "smtp_code" => $code,
+                      "smtp_msg" => substr($rply,4));
+            if($this->do_debug >= 1) {
+                echo "SMTP -> ERROR: " . $this->error["error"] .
+                         ": " . $rply . $this->CRLF;
+            }
+            return false;
+        }
+
+        # parse the reply and place in our array to return to user
+        $entries = explode($this->CRLF,$rply);
+        while(list(,$l) = @each($entries)) {
+            $list[] = substr($l,4);
+        }
+
+        return $list;
+    }
+
+    /**
+     * Sends the HELO command to the smtp server.
+     * This makes sure that we and the server are in
+     * the same known state.
+     *
+     * Implements from rfc 821: HELO <SP> <domain> <CRLF>
+     *
+     * SMTP CODE SUCCESS: 250
+     * SMTP CODE ERROR  : 500, 501, 504, 421
+     * @access public
+     * @return bool
+     */
+    function Hello($host="") {
+        $this->error = null; # so no confusion is caused
+
+        if(!$this->connected()) {
+            $this->error = array(
+                    "error" => "Called Hello() without being connected");
+            return false;
+        }
+
+        # if a hostname for the HELO wasn't specified determine
+        # a suitable one to send
+        if(empty($host)) {
+            # we need to determine some sort of appopiate default
+            # to send to the server
+            $host = "localhost";
+        }
+
+        // Send extended hello first (RFC 2821)
+        if(!$this->SendHello("EHLO", $host))
+        {
+            if(!$this->SendHello("HELO", $host))
+                return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * Sends a HELO/EHLO command.
+     * @access private
+     * @return bool
+     */
+    function SendHello($hello, $host) {
+        fputs($this->smtp_conn, $hello . " " . $host . $this->CRLF);
+
+        $rply = $this->get_lines();
+        $code = substr($rply,0,3);
+
+        if($this->do_debug >= 2) {
+            echo "SMTP -> FROM SERVER: " . $this->CRLF . $rply;
+        }
+
+        if($code != 250) {
+            $this->error =
+                array("error" => $hello . " not accepted from server",
+                      "smtp_code" => $code,
+                      "smtp_msg" => substr($rply,4));
+            if($this->do_debug >= 1) {
+                echo "SMTP -> ERROR: " . $this->error["error"] .
+                         ": " . $rply . $this->CRLF;
+            }
+            return false;
+        }
+
+        $this->helo_rply = $rply;
+        
+        return true;
+    }
+
+    /**
+     * Gets help information on the keyword specified. If the keyword
+     * is not specified then returns generic help, ussually contianing
+     * A list of keywords that help is available on. This function
+     * returns the results back to the user. It is up to the user to
+     * handle the returned data. If an error occurs then false is
+     * returned with $this->error set appropiately.
+     *
+     * Implements rfc 821: HELP [ <SP> <string> ] <CRLF>
+     *
+     * SMTP CODE SUCCESS: 211,214
+     * SMTP CODE ERROR  : 500,501,502,504,421
+     * @access public
+     * @return string
+     */
+    function Help($keyword="") {
+        $this->error = null; # to avoid confusion
+
+        if(!$this->connected()) {
+            $this->error = array(
+                    "error" => "Called Help() without being connected");
+            return false;
+        }
+
+        $extra = "";
+        if(!empty($keyword)) {
+            $extra = " " . $keyword;
+        }
+
+        fputs($this->smtp_conn,"HELP" . $extra . $this->CRLF);
+
+        $rply = $this->get_lines();
+        $code = substr($rply,0,3);
+
+        if($this->do_debug >= 2) {
+            echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+        }
+
+        if($code != 211 && $code != 214) {
+            $this->error =
+                array("error" => "HELP not accepted from server",
+                      "smtp_code" => $code,
+                      "smtp_msg" => substr($rply,4));
+            if($this->do_debug >= 1) {
+                echo "SMTP -> ERROR: " . $this->error["error"] .
+                         ": " . $rply . $this->CRLF;
+            }
+            return false;
+        }
+
+        return $rply;
+    }
+
+    /**
+     * Starts a mail transaction from the email address specified in
+     * $from. Returns true if successful or false otherwise. If True
+     * the mail transaction is started and then one or more Recipient
+     * commands may be called followed by a Data command.
+     *
+     * Implements rfc 821: MAIL <SP> FROM:<reverse-path> <CRLF>
+     *
+     * SMTP CODE SUCCESS: 250
+     * SMTP CODE SUCCESS: 552,451,452
+     * SMTP CODE SUCCESS: 500,501,421
+     * @access public
+     * @return bool
+     */
+    function Mail($from) {
+        $this->error = null; # so no confusion is caused
+
+        if(!$this->connected()) {
+            $this->error = array(
+                    "error" => "Called Mail() without being connected");
+            return false;
+        }
+
+        fputs($this->smtp_conn,"MAIL FROM:<" . $from . ">" . $this->CRLF);
+
+        $rply = $this->get_lines();
+        $code = substr($rply,0,3);
+
+        if($this->do_debug >= 2) {
+            echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+        }
+
+        if($code != 250) {
+            $this->error =
+                array("error" => "MAIL not accepted from server",
+                      "smtp_code" => $code,
+                      "smtp_msg" => substr($rply,4));
+            if($this->do_debug >= 1) {
+                echo "SMTP -> ERROR: " . $this->error["error"] .
+                         ": " . $rply . $this->CRLF;
+            }
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Sends the command NOOP to the SMTP server.
+     *
+     * Implements from rfc 821: NOOP <CRLF>
+     *
+     * SMTP CODE SUCCESS: 250
+     * SMTP CODE ERROR  : 500, 421
+     * @access public
+     * @return bool
+     */
+    function Noop() {
+        $this->error = null; # so no confusion is caused
+
+        if(!$this->connected()) {
+            $this->error = array(
+                    "error" => "Called Noop() without being connected");
+            return false;
+        }
+
+        fputs($this->smtp_conn,"NOOP" . $this->CRLF);
+
+        $rply = $this->get_lines();
+        $code = substr($rply,0,3);
+
+        if($this->do_debug >= 2) {
+            echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+        }
+
+        if($code != 250) {
+            $this->error =
+                array("error" => "NOOP not accepted from server",
+                      "smtp_code" => $code,
+                      "smtp_msg" => substr($rply,4));
+            if($this->do_debug >= 1) {
+                echo "SMTP -> ERROR: " . $this->error["error"] .
+                         ": " . $rply . $this->CRLF;
+            }
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Sends the quit command to the server and then closes the socket
+     * if there is no error or the $close_on_error argument is true.
+     *
+     * Implements from rfc 821: QUIT <CRLF>
+     *
+     * SMTP CODE SUCCESS: 221
+     * SMTP CODE ERROR  : 500
+     * @access public
+     * @return bool
+     */
+    function Quit($close_on_error=true) {
+        $this->error = null; # so there is no confusion
+
+        if(!$this->connected()) {
+            $this->error = array(
+                    "error" => "Called Quit() without being connected");
+            return false;
+        }
+
+        # send the quit command to the server
+        fputs($this->smtp_conn,"quit" . $this->CRLF);
+
+        # get any good-bye messages
+        $byemsg = $this->get_lines();
+
+        if($this->do_debug >= 2) {
+            echo "SMTP -> FROM SERVER:" . $this->CRLF . $byemsg;
+        }
+
+        $rval = true;
+        $e = null;
+
+        $code = substr($byemsg,0,3);
+        if($code != 221) {
+            # use e as a tmp var cause Close will overwrite $this->error
+            $e = array("error" => "SMTP server rejected quit command",
+                       "smtp_code" => $code,
+                       "smtp_rply" => substr($byemsg,4));
+            $rval = false;
+            if($this->do_debug >= 1) {
+                echo "SMTP -> ERROR: " . $e["error"] . ": " .
+                         $byemsg . $this->CRLF;
+            }
+        }
+
+        if(empty($e) || $close_on_error) {
+            $this->Close();
+        }
+
+        return $rval;
+    }
+
+    /**
+     * Sends the command RCPT to the SMTP server with the TO: argument of $to.
+     * Returns true if the recipient was accepted false if it was rejected.
+     *
+     * Implements from rfc 821: RCPT <SP> TO:<forward-path> <CRLF>
+     *
+     * SMTP CODE SUCCESS: 250,251
+     * SMTP CODE FAILURE: 550,551,552,553,450,451,452
+     * SMTP CODE ERROR  : 500,501,503,421
+     * @access public
+     * @return bool
+     */
+    function Recipient($to) {
+        $this->error = null; # so no confusion is caused
+
+        if(!$this->connected()) {
+            $this->error = array(
+                    "error" => "Called Recipient() without being connected");
+            return false;
+        }
+
+        fputs($this->smtp_conn,"RCPT TO:<" . $to . ">" . $this->CRLF);
+
+        $rply = $this->get_lines();
+        $code = substr($rply,0,3);
+
+        if($this->do_debug >= 2) {
+            echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+        }
+
+        if($code != 250 && $code != 251) {
+            $this->error =
+                array("error" => "RCPT not accepted from server",
+                      "smtp_code" => $code,
+                      "smtp_msg" => substr($rply,4));
+            if($this->do_debug >= 1) {
+                echo "SMTP -> ERROR: " . $this->error["error"] .
+                         ": " . $rply . $this->CRLF;
+            }
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Sends the RSET command to abort and transaction that is
+     * currently in progress. Returns true if successful false
+     * otherwise.
+     *
+     * Implements rfc 821: RSET <CRLF>
+     *
+     * SMTP CODE SUCCESS: 250
+     * SMTP CODE ERROR  : 500,501,504,421
+     * @access public
+     * @return bool
+     */
+    function Reset() {
+        $this->error = null; # so no confusion is caused
+
+        if(!$this->connected()) {
+            $this->error = array(
+                    "error" => "Called Reset() without being connected");
+            return false;
+        }
+
+        fputs($this->smtp_conn,"RSET" . $this->CRLF);
+
+        $rply = $this->get_lines();
+        $code = substr($rply,0,3);
+
+        if($this->do_debug >= 2) {
+            echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+        }
+
+        if($code != 250) {
+            $this->error =
+                array("error" => "RSET failed",
+                      "smtp_code" => $code,
+                      "smtp_msg" => substr($rply,4));
+            if($this->do_debug >= 1) {
+                echo "SMTP -> ERROR: " . $this->error["error"] .
+                         ": " . $rply . $this->CRLF;
+            }
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * Starts a mail transaction from the email address specified in
+     * $from. Returns true if successful or false otherwise. If True
+     * the mail transaction is started and then one or more Recipient
+     * commands may be called followed by a Data command. This command
+     * will send the message to the users terminal if they are logged
+     * in.
+     *
+     * Implements rfc 821: SEND <SP> FROM:<reverse-path> <CRLF>
+     *
+     * SMTP CODE SUCCESS: 250
+     * SMTP CODE SUCCESS: 552,451,452
+     * SMTP CODE SUCCESS: 500,501,502,421
+     * @access public
+     * @return bool
+     */
+    function Send($from) {
+        $this->error = null; # so no confusion is caused
+
+        if(!$this->connected()) {
+            $this->error = array(
+                    "error" => "Called Send() without being connected");
+            return false;
+        }
+
+        fputs($this->smtp_conn,"SEND FROM:" . $from . $this->CRLF);
+
+        $rply = $this->get_lines();
+        $code = substr($rply,0,3);
+
+        if($this->do_debug >= 2) {
+            echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+        }
+
+        if($code != 250) {
+            $this->error =
+                array("error" => "SEND not accepted from server",
+                      "smtp_code" => $code,
+                      "smtp_msg" => substr($rply,4));
+            if($this->do_debug >= 1) {
+                echo "SMTP -> ERROR: " . $this->error["error"] .
+                         ": " . $rply . $this->CRLF;
+            }
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Starts a mail transaction from the email address specified in
+     * $from. Returns true if successful or false otherwise. If True
+     * the mail transaction is started and then one or more Recipient
+     * commands may be called followed by a Data command. This command
+     * will send the message to the users terminal if they are logged
+     * in and send them an email.
+     *
+     * Implements rfc 821: SAML <SP> FROM:<reverse-path> <CRLF>
+     *
+     * SMTP CODE SUCCESS: 250
+     * SMTP CODE SUCCESS: 552,451,452
+     * SMTP CODE SUCCESS: 500,501,502,421
+     * @access public
+     * @return bool
+     */
+    function SendAndMail($from) {
+        $this->error = null; # so no confusion is caused
+
+        if(!$this->connected()) {
+            $this->error = array(
+                "error" => "Called SendAndMail() without being connected");
+            return false;
+        }
+
+        fputs($this->smtp_conn,"SAML FROM:" . $from . $this->CRLF);
+
+        $rply = $this->get_lines();
+        $code = substr($rply,0,3);
+
+        if($this->do_debug >= 2) {
+            echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+        }
+
+        if($code != 250) {
+            $this->error =
+                array("error" => "SAML not accepted from server",
+                      "smtp_code" => $code,
+                      "smtp_msg" => substr($rply,4));
+            if($this->do_debug >= 1) {
+                echo "SMTP -> ERROR: " . $this->error["error"] .
+                         ": " . $rply . $this->CRLF;
+            }
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Starts a mail transaction from the email address specified in
+     * $from. Returns true if successful or false otherwise. If True
+     * the mail transaction is started and then one or more Recipient
+     * commands may be called followed by a Data command. This command
+     * will send the message to the users terminal if they are logged
+     * in or mail it to them if they are not.
+     *
+     * Implements rfc 821: SOML <SP> FROM:<reverse-path> <CRLF>
+     *
+     * SMTP CODE SUCCESS: 250
+     * SMTP CODE SUCCESS: 552,451,452
+     * SMTP CODE SUCCESS: 500,501,502,421
+     * @access public
+     * @return bool
+     */
+    function SendOrMail($from) {
+        $this->error = null; # so no confusion is caused
+
+        if(!$this->connected()) {
+            $this->error = array(
+                "error" => "Called SendOrMail() without being connected");
+            return false;
+        }
+
+        fputs($this->smtp_conn,"SOML FROM:" . $from . $this->CRLF);
+
+        $rply = $this->get_lines();
+        $code = substr($rply,0,3);
+
+        if($this->do_debug >= 2) {
+            echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+        }
+
+        if($code != 250) {
+            $this->error =
+                array("error" => "SOML not accepted from server",
+                      "smtp_code" => $code,
+                      "smtp_msg" => substr($rply,4));
+            if($this->do_debug >= 1) {
+                echo "SMTP -> ERROR: " . $this->error["error"] .
+                         ": " . $rply . $this->CRLF;
+            }
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * This is an optional command for SMTP that this class does not
+     * support. This method is here to make the RFC821 Definition
+     * complete for this class and __may__ be implimented in the future
+     *
+     * Implements from rfc 821: TURN <CRLF>
+     *
+     * SMTP CODE SUCCESS: 250
+     * SMTP CODE FAILURE: 502
+     * SMTP CODE ERROR  : 500, 503
+     * @access public
+     * @return bool
+     */
+    function Turn() {
+        $this->error = array("error" => "This method, TURN, of the SMTP ".
+                                        "is not implemented");
+        if($this->do_debug >= 1) {
+            echo "SMTP -> NOTICE: " . $this->error["error"] . $this->CRLF;
+        }
+        return false;
+    }
+
+    /**
+     * Verifies that the name is recognized by the server.
+     * Returns false if the name could not be verified otherwise
+     * the response from the server is returned.
+     *
+     * Implements rfc 821: VRFY <SP> <string> <CRLF>
+     *
+     * SMTP CODE SUCCESS: 250,251
+     * SMTP CODE FAILURE: 550,551,553
+     * SMTP CODE ERROR  : 500,501,502,421
+     * @access public
+     * @return int
+     */
+    function Verify($name) {
+        $this->error = null; # so no confusion is caused
+
+        if(!$this->connected()) {
+            $this->error = array(
+                    "error" => "Called Verify() without being connected");
+            return false;
+        }
+
+        fputs($this->smtp_conn,"VRFY " . $name . $this->CRLF);
+
+        $rply = $this->get_lines();
+        $code = substr($rply,0,3);
+
+        if($this->do_debug >= 2) {
+            echo "SMTP -> FROM SERVER:" . $this->CRLF . $rply;
+        }
+
+        if($code != 250 && $code != 251) {
+            $this->error =
+                array("error" => "VRFY failed on name '$name'",
+                      "smtp_code" => $code,
+                      "smtp_msg" => substr($rply,4));
+            if($this->do_debug >= 1) {
+                echo "SMTP -> ERROR: " . $this->error["error"] .
+                         ": " . $rply . $this->CRLF;
+            }
+            return false;
+        }
+        return $rply;
+    }
+
+    /*******************************************************************
+     *                       INTERNAL FUNCTIONS                       *
+     ******************************************************************/
+
+    /**
+     * Read in as many lines as possible
+     * either before eof or socket timeout occurs on the operation.
+     * With SMTP we can tell if we have more lines to read if the
+     * 4th character is '-' symbol. If it is a space then we don't
+     * need to read anything else.
+     * @access private
+     * @return string
+     */
+    function get_lines() {
+        $data = "";
+        while($str = fgets($this->smtp_conn,515)) {
+            if($this->do_debug >= 4) {
+                echo "SMTP -> get_lines(): \$data was \"$data\"" .
+                         $this->CRLF;
+                echo "SMTP -> get_lines(): \$str is \"$str\"" .
+                         $this->CRLF;
+            }
+            $data .= $str;
+            if($this->do_debug >= 4) {
+                echo "SMTP -> get_lines(): \$data is \"$data\"" . $this->CRLF;
+            }
+            # if the 4th character is a space then we are done reading
+            # so just break the loop
+            if(substr($str,3,1) == " ") { break; }
+        }
+        return $data;
+    }
+
+}
+
+
+ ?>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-br.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-br.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-br.php	(revision 76)
@@ -0,0 +1,21 @@
+<?php
+/**
+ * PHPMailer language file.  
+ * Portuguese Version
+ * By Paulo Henrique Garcia - paulo@controllerweb.com.br
+ */
+
+$PHPMAILER_LANG = array();
+$PHPMAILER_LANG["provide_address"] = 'Você deve fornecer pelo menos um endereço de destinatário de email.';
+$PHPMAILER_LANG["mailer_not_supported"] = ' mailer não suportado.';
+$PHPMAILER_LANG["execute"] = 'Não foi possível executar: ';
+$PHPMAILER_LANG["instantiate"] = 'Não foi possível instanciar a função mail.';
+$PHPMAILER_LANG["authenticate"] = 'Erro de SMTP: Não foi possível autenticar.';
+$PHPMAILER_LANG["from_failed"] = 'Os endereços de rementente a seguir falharam: ';
+$PHPMAILER_LANG["recipients_failed"] = 'Erro de SMTP: Os endereços de destinatário a seguir falharam: ';
+$PHPMAILER_LANG["data_not_accepted"] = 'Erro de SMTP: Dados não aceitos.';
+$PHPMAILER_LANG["connect_host"] = 'Erro de SMTP: Não foi possível conectar com o servidor SMTP.';
+$PHPMAILER_LANG["file_access"] = 'Não foi possível acessar o arquivo: ';
+$PHPMAILER_LANG["file_open"] = 'Erro de Arquivo: Não foi possível abrir o arquivo: ';
+$PHPMAILER_LANG["encoding"] = 'Codificação desconhecida: ';
+?>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-ca.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-ca.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-ca.php	(revision 76)
@@ -0,0 +1,22 @@
+<?php
+/**
+ * PHPMailer language file.  
+ * Catalan Version
+ * By Ivan: web AT microstudi DOT com
+ */
+
+$PHPMAILER_LANG = array(); 
+
+$PHPMAILER_LANG["provide_address"] = 'S\'ha de proveir almenys una adreça d\'email com a destinatari.';
+$PHPMAILER_LANG["mailer_not_supported"] = ' mailer no està suportat';
+$PHPMAILER_LANG["execute"] = 'No es pot executar: ';
+$PHPMAILER_LANG["instantiate"] = 'No s\'ha pogut crear una instància de la funció Mail.';
+$PHPMAILER_LANG["authenticate"] = 'Error SMTP: No s\'hapogut autenticar.';
+$PHPMAILER_LANG["from_failed"] = 'La(s) següent(s) adreces de remitent han fallat: ';
+$PHPMAILER_LANG["recipients_failed"] = 'Error SMTP: Els següents destinataris han fallat: ';
+$PHPMAILER_LANG["data_not_accepted"] = 'Error SMTP: Dades no acceptades.';
+$PHPMAILER_LANG["connect_host"] = 'Error SMTP: No es pot connectar al servidor SMTP.';
+$PHPMAILER_LANG["file_access"] = 'No es pot accedir a l\'arxiu: ';
+$PHPMAILER_LANG["file_open"] = 'Error d\'Arxiu: No es pot obrir l\'arxiu: ';
+$PHPMAILER_LANG["encoding"] = 'Codificació desconeguda: ';
+?>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-cz.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-cz.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-cz.php	(revision 76)
@@ -0,0 +1,24 @@
+<?php
+/**
+ * PHPMailer language file.  
+ * Czech Version
+ */
+
+$PHPMAILER_LANG = array();
+
+$PHPMAILER_LANG["provide_address"] = 'Musíte zadat alespoò jednu ' .
+                                     'emailovou adresu pøíjemce.';
+$PHPMAILER_LANG["mailer_not_supported"] = ' mailový klient není podporován.';
+$PHPMAILER_LANG["execute"] = 'Nelze provést: ';
+$PHPMAILER_LANG["instantiate"] = 'Nelze vytvoøit instanci emailové funkce.';
+$PHPMAILER_LANG["authenticate"] = 'SMTP Error: Chyba autentikace.';
+$PHPMAILER_LANG["from_failed"] = 'Následující adresa From je nesprávná: ';
+$PHPMAILER_LANG["recipients_failed"] = 'SMTP Error: Adresy pøíjemcù ' .
+                                       'nejsou správné ' .
+$PHPMAILER_LANG["data_not_accepted"] = 'SMTP Error: Data nebyla pøijata';
+$PHPMAILER_LANG["connect_host"] = 'SMTP Error: Nelze navázat spojení se ' .
+                                  ' SMTP serverem.';
+$PHPMAILER_LANG["file_access"] = 'Soubor nenalezen: ';
+$PHPMAILER_LANG["file_open"] = 'File Error: Nelze otevøít soubor pro ètení: ';
+$PHPMAILER_LANG["encoding"] = 'Neznámé kódování: ';
+?>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-de.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-de.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-de.php	(revision 76)
@@ -0,0 +1,23 @@
+<?php
+/**
+ * PHPMailer language file.  
+ * German Version
+ */
+
+$PHPMAILER_LANG = array();
+
+$PHPMAILER_LANG["provide_address"] = 'Bitte geben Sie mindestens eine ' .
+                                     'Empf&auml;nger Emailadresse an.';
+$PHPMAILER_LANG["mailer_not_supported"] = ' mailer wird nicht unterst&uuml;tzt.';
+$PHPMAILER_LANG["execute"] = 'Konnte folgenden Befehl nicht ausf&uuml;hren: ';
+$PHPMAILER_LANG["instantiate"] = 'Mail Funktion konnte nicht initialisiert werden.';
+$PHPMAILER_LANG["authenticate"] = 'SMTP Fehler: Authentifizierung fehlgeschlagen.';
+$PHPMAILER_LANG["from_failed"] = 'Die folgende Absenderadresse ist nicht korrekt: ';
+$PHPMAILER_LANG["recipients_failed"] = 'SMTP Fehler: Die folgenden ' .
+                                       'Empf&auml;nger sind nicht korrekt: ';
+$PHPMAILER_LANG["data_not_accepted"] = 'SMTP Fehler: Daten werden nicht akzeptiert.';
+$PHPMAILER_LANG["connect_host"] = 'SMTP Fehler: Konnte keine Verbindung zum SMTP-Host herstellen.';
+$PHPMAILER_LANG["file_access"] = 'Zugriff auf folgende Datei fehlgeschlagen: ';
+$PHPMAILER_LANG["file_open"] = 'Datei Fehler: konnte folgende Datei nicht &ouml;ffnen: ';
+$PHPMAILER_LANG["encoding"] = 'Unbekanntes Encoding-Format: ';
+?>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-dk.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-dk.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-dk.php	(revision 76)
@@ -0,0 +1,24 @@
+<?php
+/**
+ * PHPMailer language file.  
+ * Danish Version
+ * Author: Mikael Stokkebro <info@stokkebro.dk>
+ */
+
+$PHPMAILER_LANG = array();
+
+$PHPMAILER_LANG["provide_address"] = 'Du skal indtaste mindst en ' .
+                                     'modtagers emailadresse.';
+$PHPMAILER_LANG["mailer_not_supported"] = ' mailer understøttes ikke.';
+$PHPMAILER_LANG["execute"] = 'Kunne ikke køre: ';
+$PHPMAILER_LANG["instantiate"] = 'Kunne ikke initialisere email funktionen.';
+$PHPMAILER_LANG["authenticate"] = 'SMTP fejl: Kunne ikke logge på.';
+$PHPMAILER_LANG["from_failed"] = 'Følgende afsenderadresse er forkert: ';
+$PHPMAILER_LANG["recipients_failed"] = 'SMTP fejl: Følgende' .
+                                       'modtagere er forkerte: ';
+$PHPMAILER_LANG["data_not_accepted"] = 'SMTP fejl: Data kunne ikke accepteres.';
+$PHPMAILER_LANG["connect_host"] = 'SMTP fejl: Kunne ikke tilslutte SMTP serveren.';
+$PHPMAILER_LANG["file_access"] = 'Ingen adgang til fil: ';
+$PHPMAILER_LANG["file_open"] = 'Fil fejl: Kunne ikke åbne filen: ';
+$PHPMAILER_LANG["encoding"] = 'Ukendt encode-format: ';
+?>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-en.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-en.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-en.php	(revision 76)
@@ -0,0 +1,23 @@
+<?php
+/**
+ * PHPMailer language file.  
+ * English Version
+ */
+
+$PHPMAILER_LANG = array();
+
+$PHPMAILER_LANG["provide_address"] = 'You must provide at least one ' .
+                                     'recipient email address.';
+$PHPMAILER_LANG["mailer_not_supported"] = ' mailer is not supported.';
+$PHPMAILER_LANG["execute"] = 'Could not execute: ';
+$PHPMAILER_LANG["instantiate"] = 'Could not instantiate mail function.';
+$PHPMAILER_LANG["authenticate"] = 'SMTP Error: Could not authenticate.';
+$PHPMAILER_LANG["from_failed"] = 'The following From address failed: ';
+$PHPMAILER_LANG["recipients_failed"] = 'SMTP Error: The following ' .
+                                       'recipients failed: ';
+$PHPMAILER_LANG["data_not_accepted"] = 'SMTP Error: Data not accepted.';
+$PHPMAILER_LANG["connect_host"] = 'SMTP Error: Could not connect to SMTP host.';
+$PHPMAILER_LANG["file_access"] = 'Could not access file: ';
+$PHPMAILER_LANG["file_open"] = 'File Error: Could not open file: ';
+$PHPMAILER_LANG["encoding"] = 'Unknown encoding: ';
+?>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-es.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-es.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-es.php	(revision 76)
@@ -0,0 +1,23 @@
+<?php
+/**
+ * PHPMailer language file.  
+ * Versión en español
+ */
+
+$PHPMAILER_LANG = array();
+
+$PHPMAILER_LANG["provide_address"] = 'Debe proveer al menos una ' .
+                                     'dirección de email como destinatario.';
+$PHPMAILER_LANG["mailer_not_supported"] = ' mailer no está soportado.';
+$PHPMAILER_LANG["execute"] = 'No puedo ejecutar: ';
+$PHPMAILER_LANG["instantiate"] = 'No pude crear una instancia de la función Mail.';
+$PHPMAILER_LANG["authenticate"] = 'Error SMTP: No se pudo autentificar.';
+$PHPMAILER_LANG["from_failed"] = 'La(s) siguiente(s) direcciones de remitente fallaron: ';
+$PHPMAILER_LANG["recipients_failed"] = 'Error SMTP: Los siguientes ' .
+                                       'destinatarios fallaron: ';
+$PHPMAILER_LANG["data_not_accepted"] = 'Error SMTP: Datos no aceptados.';
+$PHPMAILER_LANG["connect_host"] = 'Error SMTP: No puedo conectar al servidor SMTP.';
+$PHPMAILER_LANG["file_access"] = 'No puedo acceder al archivo: ';
+$PHPMAILER_LANG["file_open"] = 'Error de Archivo: No puede abrir el archivo: ';
+$PHPMAILER_LANG["encoding"] = 'Codificación desconocida: ';
+?>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-fi.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-fi.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-fi.php	(revision 76)
@@ -0,0 +1,23 @@
+<?php
+/**
+ * PHPMailer language file.  
+ * Finnish Version
+ * By Jyry Kuukanen
+ */
+
+$PHPMAILER_LANG = array(); 
+
+$PHPMAILER_LANG["provide_address"] = 'Aseta v&auml;hint&auml;&auml;n yksi vastaanottajan ' . 
+                                     's&auml;hk&ouml;postiosoite.'; 
+$PHPMAILER_LANG["mailer_not_supported"] = 'postiv&auml;litintyyppi&auml; ei tueta.'; 
+$PHPMAILER_LANG["execute"] = 'Suoritus ep&auml;onnistui: '; 
+$PHPMAILER_LANG["instantiate"] = 'mail-funktion luonti ep&auml;onnistui.'; 
+$PHPMAILER_LANG["authenticate"] = 'SMTP-virhe: k&auml;ytt&auml;j&auml;tunnistus ep&auml;onnistui.'; 
+$PHPMAILER_LANG["from_failed"] = 'Seuraava l&auml;hett&auml;j&auml;n osoite on virheellinen: '; 
+$PHPMAILER_LANG["recipients_failed"] = 'SMTP-virhe: seuraava vastaanottaja osoite on virheellinen.'; 
+$PHPMAILER_LANG["data_not_accepted"] = 'SMTP-virhe: data on virheellinen.'; 
+$PHPMAILER_LANG["connect_host"] = 'SMTP-virhe: yhteys palvelimeen ei onnistu.'; 
+$PHPMAILER_LANG["file_access"] = 'Seuraavaan tiedostoon ei ole oikeuksia: '; 
+$PHPMAILER_LANG["file_open"] = 'Tiedostovirhe: Ei voida avata tiedostoa: '; 
+$PHPMAILER_LANG["encoding"] = 'Tuntematon koodaustyyppi: '; 
+?>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-fo.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-fo.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-fo.php	(revision 76)
@@ -0,0 +1,50 @@
+<?php
+
+/**
+
+ * PHPMailer language file.  
+
+ * Faroese Version [language of the Faroe Islands, a Danish dominion]
+
+ * This file created: 11-06-2004
+
+ * Supplied by Dávur Sørensen [www.profo-webdesign.dk]
+
+ */
+
+
+
+$PHPMAILER_LANG = array();
+
+
+
+$PHPMAILER_LANG["provide_address"] = 'Tú skal uppgeva minst ' .
+
+                                     'móttakara-emailadressu(r).';
+
+$PHPMAILER_LANG["mailer_not_supported"] = ' er ikki supporterað.';
+
+$PHPMAILER_LANG["execute"] = 'Kundi ikki útføra: ';
+
+$PHPMAILER_LANG["instantiate"] = 'Kuni ikki instantiera mail funktión.';
+
+$PHPMAILER_LANG["authenticate"] = 'SMTP feilur: Kundi ikki góðkenna.';
+
+$PHPMAILER_LANG["from_failed"] = 'fylgjandi Frá/From adressa miseydnaðist: ';
+
+$PHPMAILER_LANG["recipients_failed"] = 'SMTP Feilur: Fylgjandi ' .
+
+                                       'móttakarar miseydnaðust: ';
+
+$PHPMAILER_LANG["data_not_accepted"] = 'SMTP feilur: Data ikki góðkent.';
+
+$PHPMAILER_LANG["connect_host"] = 'SMTP feilur: Kundi ikki knýta samband við SMTP vert.';
+
+$PHPMAILER_LANG["file_access"] = 'Kundi ikki tilganga fílu: ';
+
+$PHPMAILER_LANG["file_open"] = 'Fílu feilur: Kundi ikki opna fílu: ';
+
+$PHPMAILER_LANG["encoding"] = 'Ókend encoding: ';
+
+?>
+
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-fr.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-fr.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-fr.php	(revision 76)
@@ -0,0 +1,24 @@
+<?php
+/**
+ * PHPMailer language file.  
+ * French Version
+ * bruno@ioda-net.ch 09.08.2003
+ */
+
+$PHPMAILER_LANG = array();
+
+$PHPMAILER_LANG["provide_address"] = 'Vous devez fournir au moins ' .
+                                     'une adresse de destinataire.';
+$PHPMAILER_LANG["mailer_not_supported"] = ' mailer non supporté.';
+$PHPMAILER_LANG["execute"] = 'Ne peut pas lancer l\'exécution: ';
+$PHPMAILER_LANG["instantiate"] = 'Impossible d\'instancier la fonction mail.';
+$PHPMAILER_LANG["authenticate"] = 'SMTP Erreur: Echec de l\'authentification.';
+$PHPMAILER_LANG["from_failed"] = 'L\'adresse From suivante a échoué : ';
+$PHPMAILER_LANG["recipients_failed"] = 'SMTP Erreur: Les destinataires ' .
+                                       'suivants sont en erreur : ';
+$PHPMAILER_LANG["data_not_accepted"] = 'SMTP Erreur: Data non acceptée.';
+$PHPMAILER_LANG["connect_host"] = 'SMTP Erreur: Impossible de connecter le serveur SMTP .';
+$PHPMAILER_LANG["file_access"] = 'N\'arrive pas à accéder au fichier: ';
+$PHPMAILER_LANG["file_open"] = 'Erreur Fichier: ouverture impossible: ';
+$PHPMAILER_LANG["encoding"] = 'Encodage inconnu: ';
+?>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-hu.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-hu.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-hu.php	(revision 76)
@@ -0,0 +1,23 @@
+<?php
+/**
+ * PHPMailer language file.  
+ * Hungarian Version
+ */
+
+$PHPMAILER_LANG = array();
+
+$PHPMAILER_LANG["provide_address"] = 'Meg kell adnod legalább egy ' .
+                                     'címzett email címet.';
+$PHPMAILER_LANG["mailer_not_supported"] = ' levelezõ nem támogatott.';
+$PHPMAILER_LANG["execute"] = 'Nem tudtam végrehajtani: ';
+$PHPMAILER_LANG["instantiate"] = 'Nem sikerült példányosítani a mail funkciót.';
+$PHPMAILER_LANG["authenticate"] = 'SMTP Hiba: Sikertelen autentikáció.';
+$PHPMAILER_LANG["from_failed"] = 'Az alábbi Feladó cím hibás: ';
+$PHPMAILER_LANG["recipients_failed"] = 'SMTP Hiba: Az alábbi ' .
+                                       'címzettek hibásak: ';
+$PHPMAILER_LANG["data_not_accepted"] = 'SMTP Hiba: Nem elfogadható adat.';
+$PHPMAILER_LANG["connect_host"] = 'SMTP Hiba: Nem tudtam csatlakozni az SMTP host-hoz.';
+$PHPMAILER_LANG["file_access"] = 'Nem sikerült elérni a következõ fájlt: ';
+$PHPMAILER_LANG["file_open"] = 'Fájl Hiba: Nem sikerült megnyitni a következõ fájlt: ';
+$PHPMAILER_LANG["encoding"] = 'Ismeretlen kódolás: ';
+?>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-it.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-it.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-it.php	(revision 76)
@@ -0,0 +1,28 @@
+<?php
+/**
+* PHPMailer language file.
+* Italian version
+* @package PHPMailer
+* @author Ilias Bartolini <brain79@inwind.it>
+*/
+
+$PHPMAILER_LANG = array();
+
+$PHPMAILER_LANG["provide_address"] = 'Deve essere fornito almeno un'.
+                                     ' indirizzo ricevente';
+$PHPMAILER_LANG["mailer_not_supported"] = 'Mailer non supportato';
+$PHPMAILER_LANG["execute"] = "Impossibile eseguire l'operazione: ";
+$PHPMAILER_LANG["instantiate"] = 'Impossibile istanziare la funzione mail';
+$PHPMAILER_LANG["authenticate"] = 'SMTP Error: Impossibile autenticarsi.';
+$PHPMAILER_LANG["from_failed"] = 'I seguenti indirizzi mittenti hanno'.
+                                 ' generato errore: ';
+$PHPMAILER_LANG["recipients_failed"] = 'SMTP Error: I seguenti indirizzi'.
+                                       'destinatari hanno generato errore: ';
+$PHPMAILER_LANG["data_not_accepted"] = 'SMTP Error: Data non accettati dal'.
+                                       'server.';
+$PHPMAILER_LANG["connect_host"] = 'SMTP Error: Impossibile connettersi'.
+                                  ' all\'host SMTP.';
+$PHPMAILER_LANG["file_access"] = 'Impossibile accedere al file: ';
+$PHPMAILER_LANG["file_open"] = 'File Error: Impossibile aprire il file: ';
+$PHPMAILER_LANG["encoding"] = 'Encoding set dei caratteri sconosciuto: ';
+?>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-ja.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-ja.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-ja.php	(revision 76)
@@ -0,0 +1,25 @@
+<?php
+/**
+ * PHPMailer language file.  
+ * Japanese Version
+ * By Mitsuhiro Yoshida - http://mitstek.com/
+ * This file is written in EUC-JP.
+ */
+
+$PHPMAILER_LANG = array();
+
+$PHPMAILER_LANG["provide_address"] = 'Ÿ¯€Ê€¯€È€â1€Ä¥á¡Œ¥ë¥¢¥É¥ì¥¹€ò' .
+                                     '»ØÄê€¹€ëÉ¬Í×€¬€¢€ê€Þ€¹¡£';
+$PHPMAILER_LANG["mailer_not_supported"] = ' ¥á¡Œ¥é¡Œ€¬¥µ¥Ý¡Œ¥È€µ€ì€Æ€€€Þ€»€ó¡£';
+$PHPMAILER_LANG["execute"] = 'ŒÂ¹Ô€Ç€­€Þ€»€ó€Ç€·€¿: ';
+$PHPMAILER_LANG["instantiate"] = '¥á¡Œ¥ëŽØ¿ô€¬ÀµŸï€ËÆ°ºî€·€Þ€»€ó€Ç€·€¿¡£';
+$PHPMAILER_LANG["authenticate"] = 'SMTP¥š¥é¡Œ: Ç§ŸÚ€Ç€­€Þ€»€ó€Ç€·€¿¡£';
+$PHPMAILER_LANG["from_failed"] = 'Œ¡€ÎFrom¥¢¥É¥ì¥¹€ËŽÖ°ã€€€¬€¢€ê€Þ€¹: ';
+$PHPMAILER_LANG["recipients_failed"] = 'SMTP¥š¥é¡Œ: Œ¡€ÎŒõ¿®ŒÔ¥¢¥É¥ì¥¹€Ë ' .
+                                       'ŽÖ°ã€€€¬€¢€ê€Þ€¹: ';
+$PHPMAILER_LANG["data_not_accepted"] = 'SMTP¥š¥é¡Œ: ¥Ç¡Œ¥¿€¬Œõ€±ÉÕ€±€é€ì€Þ€»€ó€Ç€·€¿¡£';
+$PHPMAILER_LANG["connect_host"] = 'SMTP¥š¥é¡Œ: SMTP¥Û¥¹¥È€ËÀÜÂ³€Ç€­€Þ€»€ó€Ç€·€¿¡£';
+$PHPMAILER_LANG["file_access"] = '¥Õ¥¡¥€¥ë€Ë¥¢¥¯¥»¥¹€Ç€­€Þ€»€ó: ';
+$PHPMAILER_LANG["file_open"] = '¥Õ¥¡¥€¥ë¥š¥é¡Œ: ¥Õ¥¡¥€¥ë€ò³«€±€Þ€»€ó: ';
+$PHPMAILER_LANG["encoding"] = 'ÉÔÌÀ€Ê¥š¥ó¥³¡Œ¥Ç¥£¥ó¥°: ';
+?>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-nl.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-nl.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-nl.php	(revision 76)
@@ -0,0 +1,23 @@
+<?php
+/**
+ * PHPMailer language file.  
+ * Dutch Version
+ */
+
+$PHPMAILER_LANG = array();
+
+$PHPMAILER_LANG["provide_address"] = 'Er moet tenmiste &eacute;&eacute;n ' .
+                                     'ontvanger emailadres opgegeven worden.';
+$PHPMAILER_LANG["mailer_not_supported"] = ' mailer wordt niet ondersteund.';
+$PHPMAILER_LANG["execute"] = 'Kon niet uitvoeren: ';
+$PHPMAILER_LANG["instantiate"] = 'Kon mail functie niet initialiseren.';
+$PHPMAILER_LANG["authenticate"] = 'SMTP Fout: authenticatie mislukt.';
+$PHPMAILER_LANG["from_failed"] = 'De volgende afzender adressen zijn mislukt: ';
+$PHPMAILER_LANG["recipients_failed"] = 'SMTP Fout: De volgende ' .
+                                       'ontvangers zijn mislukt: ';
+$PHPMAILER_LANG["data_not_accepted"] = 'SMTP Fout: Data niet geaccepteerd.';
+$PHPMAILER_LANG["connect_host"] = 'SMTP Fout: Kon niet verbinden met SMTP host.';
+$PHPMAILER_LANG["file_access"] = 'Kreeg geen toegang tot bestand: ';
+$PHPMAILER_LANG["file_open"] = 'Bestandsfout: Kon bestand niet openen: ';
+$PHPMAILER_LANG["encoding"] = 'Onbekende codering: ';
+?>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-no.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-no.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-no.php	(revision 76)
@@ -0,0 +1,23 @@
+<?php
+/**
+ * PHPMailer language file.
+ * Norwegian Version
+ */
+
+$PHPMAILER_LANG = array();
+
+$PHPMAILER_LANG["provide_address"] = 'Du må ha med minst en' .
+                                     'mottager adresse.';
+$PHPMAILER_LANG["mailer_not_supported"] = ' mailer er ikke supportert.';
+$PHPMAILER_LANG["execute"] = 'Kunne ikke utføre: ';
+$PHPMAILER_LANG["instantiate"] = 'Kunne ikke instantiate mail funksjonen.';
+$PHPMAILER_LANG["authenticate"] = 'SMTP Feil: Kunne ikke authentisere.';
+$PHPMAILER_LANG["from_failed"] = 'Følgende Fra feilet: ';
+$PHPMAILER_LANG["recipients_failed"] = 'SMTP Feil: Følgende' .
+                                       'mottagere feilet: ';
+$PHPMAILER_LANG["data_not_accepted"] = 'SMTP Feil: Data ble ikke akseptert.';
+$PHPMAILER_LANG["connect_host"] = 'SMTP Feil: Kunne ikke koble til SMTP host.';
+$PHPMAILER_LANG["file_access"] = 'Kunne ikke få tilgang til filen: ';
+$PHPMAILER_LANG["file_open"] = 'Fil feil: Kunne ikke åpne filen: ';
+$PHPMAILER_LANG["encoding"] = 'Ukjent encoding: ';
+?>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-pl.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-pl.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-pl.php	(revision 76)
@@ -0,0 +1,24 @@
+<?php
+/**
+ * PHPMailer language file.  
+ * Polish Version, encoding: windows-1250
+ * translated from english lang file ver. 1.72
+ */
+
+$PHPMAILER_LANG = array();
+
+$PHPMAILER_LANG["provide_address"] = 'Nale¿y podaæ prawid³owy adres email Odbiorcy.';
+$PHPMAILER_LANG["mailer_not_supported"] = 'Wybrana metoda wysy³ki wiadomoci nie jest obs³ugiwana.';
+$PHPMAILER_LANG["execute"] = 'Nie mo¿na uruchomiæ: ';
+$PHPMAILER_LANG["instantiate"] = 'Nie mo¿na wywo³aæ funkcji mail(). Sprawd konfiguracjê serwera.';
+$PHPMAILER_LANG["authenticate"] = 'B³¹d SMTP: Nie mo¿na przeprowadziæ autentykacji.';
+$PHPMAILER_LANG["from_failed"] = 'Nastêpuj¹cy adres Nadawcy jest jest nieprawid³owy: ';
+$PHPMAILER_LANG["recipients_failed"] = 'B³¹d SMTP: Nastêpuj¹cy ' .
+                                       'odbiorcy s¹ nieprawid³owi: ';
+$PHPMAILER_LANG["data_not_accepted"] = 'B³¹d SMTP: Dane nie zosta³y przyjête.';
+$PHPMAILER_LANG["connect_host"] = 'B³¹d SMTP: Nie mo¿na po³¹czyæ siê z wybranym hostem.';
+$PHPMAILER_LANG["file_access"] = 'Brak dostêpu do pliku: ';
+$PHPMAILER_LANG["file_open"] = 'Nie mo¿na otworzyæ pliku: ';
+$PHPMAILER_LANG["encoding"] = 'Nieznany sposób kodowania znaków: ';
+
+?>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-ro.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-ro.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-ro.php	(revision 76)
@@ -0,0 +1,23 @@
+<?php
+/**
+ * PHPMailer language file.  
+ * Romanian Version
+ * @package PHPMailer
+ * @author Catalin Constantin <catalin@dazoot.ro>
+ */
+
+$PHPMAILER_LANG = array();
+
+$PHPMAILER_LANG["provide_address"] = 'Trebuie sa adaugati cel putin un recipient (adresa de mail).';
+$PHPMAILER_LANG["mailer_not_supported"] = ' mailer nu este suportat.';
+$PHPMAILER_LANG["execute"] = 'Nu pot executa:  ';
+$PHPMAILER_LANG["instantiate"] = 'Nu am putut instantia functia mail.';
+$PHPMAILER_LANG["authenticate"] = 'Eroare SMTP: Nu a functionat autentificarea.';
+$PHPMAILER_LANG["from_failed"] = 'Urmatoarele adrese From au dat eroare: ';
+$PHPMAILER_LANG["recipients_failed"] = 'Eroare SMTP: Urmatoarele adrese de mail au dat eroare: ';
+$PHPMAILER_LANG["data_not_accepted"] = 'Eroare SMTP: Continutul mailului nu a fost acceptat.';
+$PHPMAILER_LANG["connect_host"] = 'Eroare SMTP: Nu m-am putut conecta la adresa SMTP.';
+$PHPMAILER_LANG["file_access"] = 'Nu pot accesa fisierul: ';
+$PHPMAILER_LANG["file_open"] = 'Eroare de fisier: Nu pot deschide fisierul: ';
+$PHPMAILER_LANG["encoding"] = 'Encodare necunoscuta: ';
+?>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-ru.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-ru.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-ru.php	(revision 76)
@@ -0,0 +1,46 @@
+<?php
+
+/**
+
+ * PHPMailer language file.  
+
+ * Russian Version
+
+ */
+
+
+
+$PHPMAILER_LANG = array();
+
+
+
+$PHPMAILER_LANG["provide_address"] = 'Ïîæàëóéñòà ââåäèòå ìèíèìóì îäèí Email' .
+
+                                     'ïîëó÷àòåëÿ.';
+
+$PHPMAILER_LANG["mailer_not_supported"] = ' mailer íå ïîääåðæèâàåòñÿ.';
+
+$PHPMAILER_LANG["execute"] = 'Íåâîçìîæíî âûïîëíèòü ýòó êîìàíäó: ';
+
+$PHPMAILER_LANG["instantiate"] = 'Ïðîèçîøëà îøèáêà ïðè èíèöèàëèçàöèè Mail ôóíêöèè.';
+
+$PHPMAILER_LANG["authenticate"] = 'SMTP îøèáêà: îøèáêà àâòîðèçàöèè.';
+
+$PHPMAILER_LANG["from_failed"] = 'Íåâåðíûé àäðåñ îòïðàâèòåëÿ: ';
+
+$PHPMAILER_LANG["recipients_failed"] = 'SMTP îøèáêà: Ñëåäóþùèå ' .
+
+                                       'àäðåñà ïîëó÷àòåëåé íåâåðíû: ';
+
+$PHPMAILER_LANG["data_not_accepted"] = 'SMTP îøèáêà: Äàííûå íå áûëè ïðèíÿòû.';
+
+$PHPMAILER_LANG["connect_host"] = 'SMTP îøèáêà: SMTP-Host íåäîñòóïåí.';
+
+$PHPMAILER_LANG["file_access"] = 'Â äîñòóïå ê ñëåäóþùåìó ôàéëó áûëî îòêàçàíî: ';
+
+$PHPMAILER_LANG["file_open"] = 'Íå ìîãó îòêðûòü ôàéë: ';
+
+$PHPMAILER_LANG["encoding"] = 'Íåèçâåñòíûé ôîðìàò êîäèðîâêè: ';
+
+?>
+
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-se.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-se.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-se.php	(revision 76)
@@ -0,0 +1,24 @@
+<?php
+/**
+ * PHPMailer language file.  
+ * Swedish Version
+ * Author: Johan Linnér <johan@linner.biz>
+ */
+
+$PHPMAILER_LANG = array();
+
+$PHPMAILER_LANG["provide_address"] = 'Du måste ange minst en ' .
+                                     'mottagares e-postadress.';
+$PHPMAILER_LANG["mailer_not_supported"] = ' mailer stöds inte.';
+$PHPMAILER_LANG["execute"] = 'Kunde inte köra: ';
+$PHPMAILER_LANG["instantiate"] = 'Kunde inte initiera e-postfunktion.';
+$PHPMAILER_LANG["authenticate"] = 'SMTP fel: Kunde inte autentisera.';
+$PHPMAILER_LANG["from_failed"] = 'Följande avsändaradress är felaktig: ';
+$PHPMAILER_LANG["recipients_failed"] = 'SMTP fel: Följande ' .
+                                       'mottagare är felaktig: ';
+$PHPMAILER_LANG["data_not_accepted"] = 'SMTP fel: Data accepterades inte.';
+$PHPMAILER_LANG["connect_host"] = 'SMTP fel: Kunde inte ansluta till SMTP-server.';
+$PHPMAILER_LANG["file_access"] = 'Ingen åtkomst till fil: ';
+$PHPMAILER_LANG["file_open"] = 'Fil fel: Kunde inte öppna fil: ';
+$PHPMAILER_LANG["encoding"] = 'Okänt encode-format: ';
+?>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-tr.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-tr.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/class/phpmailer/language/phpmailer.lang-tr.php	(revision 76)
@@ -0,0 +1,25 @@
+<?php
+/**
+ * PHPMailer dil dosyasý.
+ * Türkçe Versiyonu
+ * ÝZYAZILIM - Elçin Özel - Can Yýlmaz - Mehmet Benlioðlu
+ */
+
+$PHPMAILER_LANG = array();
+
+$PHPMAILER_LANG["provide_address"] = 'En az bir tane mail adresi belirtmek zorundasýnýz ' .
+                                     'alýcýnýn email adresi.';
+$PHPMAILER_LANG["mailer_not_supported"] = ' mailler desteklenmemektedir.';
+$PHPMAILER_LANG["execute"] = 'Çalýþtýrýlamýyor: ';
+$PHPMAILER_LANG["instantiate"] = 'Örnek mail fonksiyonu yaratýlamadý.';
+$PHPMAILER_LANG["authenticate"] = 'SMTP Hatasý: Doðrulanamýyor.';
+$PHPMAILER_LANG["from_failed"] = 'Baþarýsýz olan gönderici adresi: ';
+$PHPMAILER_LANG["recipients_failed"] = 'SMTP Hatasý:  ' .
+                                       'alýcýlara ulaþmadý: ';
+$PHPMAILER_LANG["data_not_accepted"] = 'SMTP Hatasý: Veri kabul edilmedi.';
+$PHPMAILER_LANG["connect_host"] = 'SMTP Hatasý: SMTP hosta baðlanýlamýyor.';
+$PHPMAILER_LANG["file_access"] = 'Dosyaya eriþilemiyor: ';
+$PHPMAILER_LANG["file_open"] = 'Dosya Hatasý: Dosya açýlamýyor: ';
+$PHPMAILER_LANG["encoding"] = 'Bilinmeyen þifreleme: ';
+
+?>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/css/abomailmans_style.css
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/css/abomailmans_style.css	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/css/abomailmans_style.css	(revision 76)
@@ -0,0 +1,24 @@
+/* CSS Document */
+
+#abomailmansListes .abonnement {
+	border:1px solid #CCCCCC;
+	padding:10px 2px 10px 2px;
+	margin:5px;}
+
+#abomailmansListes {
+
+}
+
+#abomailmansListes .inp {
+	/*width:150px !important;*/
+	border:1px solid #CCCCCC;}
+
+ #abomailmansListes label, #abomailmansListes legend{
+	font-size:.8em;}
+
+#abomailmansListes legend{
+	padding:.5em;
+	font-size:1em;}
+
+#ajax-loader {
+	padding:10px;}
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/css/datePicker.css
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/css/datePicker.css	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/css/datePicker.css	(revision 76)
@@ -0,0 +1,101 @@
+/* CSS Document */
+
+
+/* Date picker specific styles follow */
+
+a.date-picker {
+	width: 16px;
+	height: 16px;
+	border: none;
+	color: #fff;
+	padding: 0;
+	margin: 0;
+	float: left;
+	overflow: hidden;
+	cursor: pointer;
+	background: url(../img_pack/calendar.png) no-repeat; 
+}
+a.date-picker span {
+	margin: 0 0 0 -2000px;
+}
+div.date-picker-holder, div.date-picker-holder * {
+	margin: 0;
+	padding: 0;
+}
+div.popup-calendar-wrapper {
+	position: relative;
+}
+div.date-picker-holder input {
+	float: left;
+}
+div.popup-calendar {
+	display: none;
+	position: absolute;
+	z-index: 2;
+	top: 0;
+	left: 0; /* value for IE */
+	padding: 4px;
+	border: 2px solid #000;
+	background: #fff;
+	color: #000;
+	overflow:hidden;
+	width: 163px;
+}
+html>body div.popup-calendar {
+	left: 99px; /* value for decent browsers */
+}
+div.popup-calendar div.link-close {
+	float: right;
+}
+div.popup-calendar div.link-prev {
+	float: left;
+}
+div.popup-calendar h3 {
+	font-size: 1.3em;
+	margin: 2px 0 5px 3px;
+}
+div.popup-calendar div.link-next {
+	float: right;
+}
+div.popup-calendar div a {
+	padding: 1px 2px;
+	color: #000;
+}
+div.popup-calendar div a:hover {
+	background-color: #000;
+	color: #fff;
+}
+div.popup-calendar table {
+	margin: 0;
+}
+* html div.popup-calendar table {
+	display: inline;
+}
+div.popup-calendar table th, div.popup-calendar table td {
+	background: #eee;
+	width: 21px;
+	height: 17px;
+	text-align: center;
+}
+div.popup-calendar table td.inactive {
+	color: #aaa;
+	padding: 1px 0 0;
+}
+div.popup-calendar table th.weekend, div.popup-calendar table td.weekend {
+	background: #f6f6f6;
+}
+div.popup-calendar table td a {
+	display: block;
+	border: 1px solid #eee;
+	width: 19px;
+	height: 15px;
+	text-decoration: none;
+	color: #333;
+}
+div.popup-calendar table td.today a {
+	border-color: #aaa;
+}
+div.popup-calendar table td a.selected, div.popup-calendar table td a:hover {
+	background: #333; 
+	color: #fff;
+}
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/exec/abomailmans_affiche_template.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/exec/abomailmans_affiche_template.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/exec/abomailmans_affiche_template.php	(revision 76)
@@ -0,0 +1,115 @@
+<?php
+
+/*
+ * Abomailmans
+ * MaZiaR - NetAktiv
+ * tech@netaktiv.com
+ * Printemps 2007
+ * Inspire de Spip-Listes
+*/
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+include_spip('inc/presentation');
+include_spip('inc/distant');
+include_spip('inc/affichage');
+include_spip('inc/meta');
+include_spip('inc/filtres');
+include_spip('inc/lang');
+include_spip ("inc/abomailmans");
+
+function exec_abomailmans_affiche_template(){
+
+	$template 		= _request('template');
+	$sujet 			= _request('sujet');
+	$message 		= _request('message');
+	$Confirmer  	= _request('Confirmer');
+	$date 			= _request('date');
+	$id_rubrique	= _request('id_rubrique');
+	$id_mot			= _request('id_mot');
+	$charset 		= lire_meta('charset');
+	
+/*	echo "<pre>";
+	print_r($GLOBALS);
+	echo "</pre>";*/
+	include_spip('public/assembler');
+	$contexte_template = array('date' => trim ($date),
+							   'id_rubrique' => $id_rubrique,
+							    'id_mot' => $id_mot,
+							   'template'=>$template,
+							   'lang'=>$lang, 
+							   'sujet'=>$sujet,
+							   'message'=>$message );
+	
+	$texte_template = recuperer_fond('templates/'.$template, $contexte_template);
+
+
+
+	echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n";
+	echo "<html lang='$lang' dir='ltr'>";
+	echo "<head><meta http_equiv='Content-Type' content='text/html; charset=".$charset."'>\n<meta http-equiv=\"Pragma\" content=\"no-cache\">\n
+	<script src=\"spip.php?page=jquery.js\" type=\"text/javascript\"></script>\n
+	<script type=\"text/javascript\">
+			$('#Confimrer').click(function(){
+				$('#Confimrer').hide();
+			 });
+			$('#confirmation').submit(function(){
+				var	 data = $('input,textarea,radio,select, checkbox', this).serialize();
+				$.ajax({ type: 'POST', 
+							url: '/ecrire/?exec=abomailmans_affiche_template', 
+							data: data, 
+							success: function(msg){  $('#envoyer').html(msg); }
+					});
+				$('#apercu').hide();
+				return false;
+				
+			});
+	</script>\n
+	
+	</head><body>\n";
+
+		// si confirmation
+	if ($Confirmer) {
+		$email_liste 	= _request('email_liste');
+		$nomsite=lire_meta("nom_site");
+		$email_webmaster = lire_meta("email_webmaster");
+
+		if (abomailman_mail ($nomsite, $email_webmaster, "", $email_liste, $sujet, $texte_template, true, $charset)) {
+			echo "E-mail envoy&eacute; &agrave; la liste de diffusion : ".$email_liste;
+		}
+	}
+	else {
+	
+		echo "<form action=\"/ecrire/?exec=abomailmans_affiche_template\" method=\"post\" id=\"confirmation\">";
+
+		echo "<input type=\"hidden\" name=\"template\" value=\"".$template."\">";
+		echo "<input type=\"hidden\" name=\"sujet\" value=\"".$sujet."\">";
+		echo "<input type=\"hidden\" name=\"message\" value=\"".$message."\">";
+		echo "<input type=\"hidden\" name=\"date\" value=\"".$date."\">";
+
+		echo "<input type=\"hidden\" name=\"id_rubrique\" value=\"".$id_rubrique."\">";
+		echo "<input type=\"hidden\" name=\"id_mot\" value=\"".$id_mot."\">";
+
+		echo liens_absolus($texte_template).$message_erreur."";
+		echo "<br/><br/>";
+
+		debut_cadre_formulaire();
+		echo "Envoyer ce courrier &agrave; cette liste de diffusion :<br />";
+		$result = spip_query("SELECT email, titre FROM spip_abomailmans");
+			echo "<select name='email_liste' class='formo'>";
+			while ($row = spip_fetch_array($result)) {
+				echo "<option value='".$row['email']."'>".$row['titre']." -> ".$row['email']."</option>\n";
+			}
+			echo "</select>";
+		echo "<div id='cacher_confirmer'><br /><input name=\"Confirmer\" type=\"submit\" value=\""._T("abomailmans:envoi_confirmer")."\" id=\"Confimrer\"></div>";
+		echo "</form>";
+		fin_cadre_formulaire();
+
+	}
+
+	echo "</body></html>";
+	unset ($_POST);
+
+}	
+
+?>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/exec/abomailmans_edit.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/exec/abomailmans_edit.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/exec/abomailmans_edit.php	(revision 76)
@@ -0,0 +1,244 @@
+<?php
+
+/*
+ * Abomailmans
+ * MaZiaR - NetAktiv
+ * tech@netaktiv.com
+ * Printemps 2007
+*/
+
+
+include_spip('inc/abomailmans');
+
+
+function abomailmans_update(){
+	include_spip('base/abstract_sql');
+	$id_abomailman = intval(_request('id_abomailman'));
+	$new = _request('new');
+	$supp_abomailman = intval(_request('supp_abomailman'));
+	$retour = _request('retour');
+	$titre = _request('titre');
+	$descriptif = _request('descriptif');
+	$email = _request('email');
+	$supp_confirme = _request('supp_confirme');
+	$supp_rejet = _request('supp_rejet');
+
+	//
+	// Modifications des donnees de base du formulaire
+	//
+	if (abomailmans_abomailman_administrable($id_abomailman)) {
+		if ($supp_abomailman = intval($supp_abomailman) AND $supp_confirme AND !$supp_rejet) {
+			$query = "DELETE FROM spip_abomailmans WHERE id_abomailman=$supp_abomailman";
+			$result = spip_query($query);
+			if ($retour) {
+				$retour = urldecode($retour);
+				Header("Location: $retour");
+				exit;
+			}
+		}
+	}
+	
+	if (abomailmans_abomailman_editable($id_abomailman)) {
+		// creation
+		if ($new == 'oui' && $titre) {
+			$id_abomailman = spip_abstract_insert(
+			"spip_abomailmans","(titre,descriptif,email)",
+			"(".
+				spip_abstract_quote($titre).", ".
+				spip_abstract_quote($descriptif).", ".
+				spip_abstract_quote($email).")");
+		}
+		// maj
+		else if ($id_abomailman && $titre) {
+			spip_query("UPDATE spip_abomailmans SET ".
+				"titre=".spip_abstract_quote($titre).", ".
+				"descriptif=".spip_abstract_quote($descriptif).", ".
+				"email=".spip_abstract_quote($email).
+				"WHERE id_abomailman=$id_abomailman");
+		}
+		// lecture
+		$result = spip_query("SELECT * FROM spip_abomailmans WHERE id_abomailman=".spip_abstract_quote($id_abomailman));
+		if ($row = spip_fetch_array($result)) {
+			$id_abomailman = $row['id_abomailman'];
+			$titre = $row['titre'];
+			$descriptif = $row['descriptif'];
+			$email = $row['email'];
+		}
+	}	
+	
+	return $id_abomailman;
+}
+
+function exec_abomailmans_edit(){
+	global $spip_lang_right;
+	$id_abomailman = intval(_request('id_abomailman'));
+	$new = _request('new');
+	$supp_abomailman = intval(_request('supp_abomailman'));
+	$retour = _request('retour');
+	$titre = _request('titre');
+	$descriptif = _request('descriptif');
+	$email = _request('email');
+	$supp_confirme = _request('supp_confirme');
+	$supp_rejet = _request('supp_rejet');
+
+	
+  _abomailmans_install();
+
+	if ($retour)
+		$retour = urldecode($retour);
+		  include_spip("inc/presentation");
+			include_spip("inc/config");
+
+	$clean_link = parametre_url(self(),'new','');
+	$abomailman_link = generer_url_ecrire('abomailmans_edit');
+	if ($new == 'oui' && !$titre)
+		$abomailman_link = parametre_url($abomailman_link,"new",$new);
+	if ($retour) 
+		$abomailman_link = parametre_url($abomailman_link,"retour",urlencode($retour));
+
+		
+	//
+	// Recupere les donnees
+	//
+	if ($new == 'oui' && !$titre) {
+		$titre = _T("abomailmans:nouvelle_liste");
+		$descriptif = "";
+		$email = "";
+		$js_titre = " onfocus=\"if(!antifocus){this.value='';antifocus=true;}\"";
+	}
+	else {
+		//
+		// Modifications au structure du formulaire
+		//
+		$id_abomailman = abomailmans_update();
+	
+		$result = spip_query("SELECT * FROM spip_abomailmans WHERE id_abomailman=".spip_abstract_quote($id_abomailman));
+		if ($row = spip_fetch_array($result)) {
+			$id_abomailman = $row['id_abomailman'];
+			$titre = $row['titre'];
+			$descriptif = $row['descriptif'];
+			$email = $row['email'];
+
+		}
+		$js_titre = "";
+	}
+	$abomailman_link = parametre_url($abomailman_link,"id_abomailman",$id_abomailman);
+	$clean_link = parametre_url($clean_link,"id_abomailman",$id_abomailman);
+
+	//
+	// Affichage de la page
+	//
+
+	debut_page("&laquo; $titre &raquo;", "documents", "abomailmans","");
+
+	debut_gauche();
+	echo "<br /><br />\n";
+
+	debut_droite();
+
+	if ($supp_abomailman && $supp_confirme==NULL && $supp_rejet==NULL) {
+		echo "<p>";
+		echo _T('charts:confirmer_supression')."</p>\n";
+		$link = parametre_url($clean_link,'supp_abomailman', $supp_abomailman);
+		echo "<form method='POST' action='"
+			. $link
+			. "' style='border: 0px; margin: 0px;'>";
+		echo "<div style='text-align:$spip_lang_right'>";
+		echo "<input type='submit' name='supp_confirme' value=\""._T('item_oui')."\" class='fondo'>";
+		echo " &nbsp; ";
+		echo "<input type='submit' name='supp_rejet' value=\""._T('item_non')."\" class='fondo'>";
+		echo "</div>";
+		echo "</form><br />\n";
+	}
+
+
+	if ($id_abomailman && $supp_confirme==NULL) {
+		debut_cadre_relief("../"._DIR_PLUGIN_ABOMAILMANS."/img_pack/mailman.gif");
+
+		gros_titre($titre);
+
+		if ($descriptif) {
+			echo "<p /><div align='left' border: 1px dashed #aaaaaa;'>";
+			echo "<strong class='verdana2'>"._T('info_descriptif')."</strong> ";
+			echo propre($descriptif);
+			echo "</div>\n";
+		}
+		
+		if ($email) {
+			echo "<p /><div align='left' border: 1px dashed #aaaaaa;'>";
+			echo "<strong class='verdana2'>"._T('abomailmans:emailliste_abomailman')."</strong> ";
+			echo propre($email);
+			echo "</div>\n";
+		}
+
+		
+
+	
+
+		fin_cadre_relief();
+	}
+
+
+	//
+	// Icones retour et suppression
+	//
+	echo "<div style='text-align:$spip_lang_right'>";
+	if ($retour) {
+		icone(_T('icone_retour'), $retour, "../"._DIR_PLUGIN_ABOMAILMANS."/img_pack/mailman.gif", "rien.gif",'right');
+	}
+	if ($id_abomailman && abomailmans_abomailman_administrable($id_abomailman)) {
+		echo "<div style='float:$spip_lang_left'>";
+		$link = parametre_url($clean_link,'supp_abomailman', $id_abomailman);
+		if (!$retour) {
+			$link=parametre_url($link,'retour', urlencode(generer_url_ecrire('abomailmans_tous')));
+		}
+		icone(_T("abomailmans:supprimer"), $link, "../"._DIR_PLUGIN_ABOMAILMANS."/img_pack/mailman.gif", "supprimer.gif");
+		echo "</div>";
+	}
+	echo "<div style='clear:both;'></div>";
+	echo "</div>";
+
+	//
+	// Edition des donnees du formulaire
+	//
+	if (abomailmans_abomailman_editable($id_abomailman)) {
+		echo "<p>";
+		debut_cadre_formulaire();
+
+		echo "<div class='verdana2'>";
+		echo "<form method='POST' action='"
+			. $abomailman_link
+			. "' style='border: 0px; margin: 0px;'>";
+
+		echo "<strong><label for='titre_abomailman'>"._T("abomailmans:titre_abomailman")."</label></strong> "._T('info_obligatoire_02');
+		echo "<br />";
+		echo "<input type='text' name='titre' id='titre_abomailman' CLASS='formo' ".
+			 "value=\"".entites_html($titre)."\" size='40'$js_titre /><br />\n";
+
+		echo "<strong><label for='desc_abomailman'>"._T('info_descriptif')."</label></strong>";
+		echo "<br />";
+		echo "<textarea name='descriptif' id='desc_abomailman' class='forml' rows='4' cols='40' wrap='soft'>";
+		echo entites_html($descriptif);
+		echo "</textarea><br />\n";
+
+					
+		echo "<strong><label for='email_abomailman'>"._T("abomailmans:emailliste_abomailman")."</label></strong> "._T('info_obligatoire_02');
+		echo "<br />";
+		echo "<input type='text' name='email' id='email_abomailman' CLASS='formo' ".
+			 "value=\"".$email."\" size='40' /><br />\n";
+ 	
+		echo "<div align='right'>";
+		echo "<input type='submit' name='Valider' value='"._T('bouton_valider')."' class='fondo'></div>\n";
+
+		echo "</form>";
+
+		echo "</div>\n";
+		echo "<div id=\"abomailmain_templaate\"></div>";
+
+		fin_cadre_formulaire();
+	}
+
+
+	fin_page();
+}
+?>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/exec/abomailmans_envoyer.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/exec/abomailmans_envoyer.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/exec/abomailmans_envoyer.php	(revision 76)
@@ -0,0 +1,108 @@
+<?php
+
+/*
+ * Abomailmans
+ * MaZiaR - NetAktiv
+ * tech@netaktiv.com
+ * Printemps 2007
+ * Inspire de Spip-Listes
+*/
+
+
+include_spip('inc/abomailmans');
+	include_spip('inc/barre');
+
+
+
+function exec_abomailmans_envoyer(){
+
+	
+
+	//
+	// Affichage de la page
+	//
+
+	debut_page(_T("abomailmans:envoyer_mailmans"), "documents", "abomailmans","");
+
+	debut_gauche();
+	debut_boite_info();
+		icone_horizontale (_T("abomailmans:icone_envoyer_mail_liste"), generer_url_ecrire("abomailmans_envoyer",""), "../"._DIR_PLUGIN_ABOMAILMANS."/img_pack/configure_mail.png", "");
+	fin_boite_info();
+
+	debut_droite();
+
+	debut_cadre_formulaire();
+
+		$liste_templates = find_all_in_path("templates/","[.]html$");
+		echo "<div id=\"ajax-loader\" align=\"right\"><img src=\""._DIR_PLUGIN_ABOMAILMANS. "/img_pack/ajax_indicator.gif\" /></div>";
+		echo "<div class='verdana2' id='envoyer'>";
+	
+		echo "<form method='POST' action='?exec=abomailmans_affiche_template' style='border: 0px; margin: 0px;' id='template' name='template'>";
+		echo "<br/><strong><label for='template'>"._T("abomailmans:template")."</label></strong><br/>";
+		echo "<select name='template'  CLASS='formo'>";
+		foreach($liste_templates as $titre_option) {
+			$titre_option = basename($titre_option,".html");		
+			echo "<option value='".$titre_option."'>".$titre_option."</option>\n";
+		}
+		echo "</select><br />";
+			
+	
+ 		echo "<label for=\"date\">Contenu a partir de cette date</label><br />\n";
+		echo "<input name=\"date\" id=\"date\" class=\"date-picker\"  /><br /><br /><br />\n";
+
+		echo "<strong><label for='sujet'>"._T("abomailmans:rubrique")."</label></strong>";
+		echo "<br />";
+		
+		echo "<select name=\"id_rubrique\"  CLASS='formo'>";
+		echo "<option value=\"\"></option>";
+		echo abomailman_arbo_rubriques(0);
+		echo "</select><br />";
+
+
+		echo "<strong><label for='sujet'>"._T("abomailmans:mot")."</label></strong>";
+		echo "<br />";
+		
+		echo "<select name=\"id_mot\"  CLASS='formo'>";
+		echo "<option value=\"\"></option>";
+		$rqt_gmc = spip_query ("SELECT id_groupe, titre FROM spip_groupes_mots WHERE articles='oui'");
+		while ($row = spip_fetch_array($rqt_gmc)) {
+		$id_groupe = $row['id_groupe'];
+		$titre = $row['titre'];
+			echo "<option value='' disabled=\"disabled\">". supprimer_numero (typo($titre)) . "</option>";
+
+			$rqt_mc = spip_query ("SELECT id_mot, titre FROM spip_mots WHERE id_groupe='".$id_groupe."'");
+
+			while ($row = spip_fetch_array($rqt_mc)) {
+				$id_mot = $row['id_mot'];
+				$titre = $row['titre'];
+				echo "<option value='".$id_mot ."'>--". supprimer_numero (typo($titre)) . "</option>";
+			}
+		
+		}
+		echo "</select><br />";
+
+		echo "<strong><label for='sujet'>"._T("abomailmans:sujet")."</label></strong> "._T('info_obligatoire_02');
+		echo "<br />";
+		
+		echo "<input type='text' name='sujet' id='sujet' CLASS='formo' value=\"\" size='40'$js_titre /><br />\n";
+
+		echo "<strong><label for='message'>"._T("abomailmans:message")."</label></strong>";
+		echo aide ("raccourcis");
+		echo "<br />";
+		echo afficher_barre('document.template.message');
+		echo "<textarea id='text_area' name='message' ".$GLOBALS['browser_caret']." class='formo' rows='5' cols='40' wrap=soft>";
+		echo $texte;
+		echo "</textarea>\n";
+		echo "<div align='right'>";
+		echo "<input type='submit' name='Valider' value='"._T('abomailmans:envoi_apercu')."' class='fondo'></div>\n";
+		echo "</form>";
+		echo "</div>\n";
+	
+
+	fin_cadre_formulaire();
+		
+		echo "<div id='apercu'></div>";
+
+	fin_page();
+}
+?>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/exec/abomailmans_tous.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/exec/abomailmans_tous.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/exec/abomailmans_tous.php	(revision 76)
@@ -0,0 +1,59 @@
+<?php
+
+/*
+ * Abomailmans
+ * MaZiaR - NetAktiv
+ * tech@netaktiv.com
+ * Printemps 2007
+*/
+
+
+include_spip('inc/abomailmans');
+
+
+function exec_abomailmans_tous(){
+	include_spip("inc/presentation");
+	
+	_abomailmans_install();
+	
+	
+	debut_page(_T("abomailmans:les_listes_mailmans"), "documents", "abomailmans");
+	debut_gauche();
+	debut_boite_info();
+	echo _T("abomailmans:les_listes_mailmans");
+	fin_boite_info();
+	
+	echo "<br/>";
+	$result = spip_query("SELECT id_abomailman FROM spip_abomailmans");
+	if (spip_num_rows($result)) {
+		debut_boite_info();
+			icone_horizontale (_T("abomailmans:icone_envoyer_mail_liste"), generer_url_ecrire("abomailmans_envoyer",""), "../"._DIR_PLUGIN_ABOMAILMANS."/img_pack/configure_mail.png", "");
+		fin_boite_info();
+	}
+	debut_droite();
+	
+	abomailmans_afficher_abomailmans(_T("abomailmans:les_listes_mailmans"),
+		array(
+		"SELECT"=>"abomailmans.*",
+		"FROM" => "spip_abomailmans AS abomailmans",
+		"JOIN" => "",
+		"WHERE" => "",
+		"GROUP BY" => "abomailmans.id_abomailman",
+		"ORDER BY" => "titre"));
+	
+	echo "<br />\n";
+	
+	if (abomailmans_abomailman_editable()) {
+		echo "<div align='right'>";
+		$link=generer_url_ecrire('abomailmans_edit', 'new=oui');
+		$link=parametre_url($link,'retour',str_replace('&amp;', '&', self()));
+		icone(_T("abomailmans:icone_ajouter_liste"), $link, "../"._DIR_PLUGIN_ABOMAILMANS. "/img_pack/mailman.gif", "creer.gif");
+		echo "</div>";
+	}
+	
+	
+	
+	fin_page();
+}
+
+?>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/formulaires/formulaire_abomailman.html
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/formulaires/formulaire_abomailman.html	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/formulaires/formulaire_abomailman.html	(revision 76)
@@ -0,0 +1,15 @@
+[(#ENV**{message})]
+<B_listes>
+	<form action="#SELF" method="post"  name="abomailman_listes" id="abomailmansListes">
+		<fieldset>
+			<legend><b><:bulletin:></b></legend>
+				<label for="nom"><input name="nom" id="nom" type="hidden" class="inp" /></label>
+				<label for="prenom"><input name="prenom" id="prenom" type="hidden" class="inp" /></label>
+				<label for="email"><:email_abonnement:><br />
+					<input name="email" id="email" type="text" class="inp" />
+				</label>
+				<input name="listes[]" value="diffusion-join@alternatives.ca" type="hidden">
+				<input name="abonnement" type="submit" value="<:jemabonne:>" class="inp" />
+		</fieldset>
+	</form>
+</B_listes>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/formulaires/formulaire_abomailman_une_liste.html
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/formulaires/formulaire_abomailman_une_liste.html	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/formulaires/formulaire_abomailman_une_liste.html	(revision 76)
@@ -0,0 +1,20 @@
+[<h2>Je souhaite rester informé-e</h2><div class="bloc"><br /><p>(#ENV{message})</p><a href="#URL_PAGE{listesdiffusions}" class="SuiteTout">Toutes les listes de diffusions</a></div><br />]
+[<h2>Je souhaite rester informé-e</h2><div class="bloc"><br /><p>(#ENV{liste_confirme})</p><a href="#URL_PAGE{listesdiffusions}" class="SuiteTout">Toutes les listes de diffusions</a></div><br />]
+
+<B_listes>
+<h2>Je souhaite rester informé-e</h2>
+<div class="bloc">
+<form action="#SELF" method="post"  name="abomailman_listes" id="abomailmansListes">
+		<div class="abonnement">
+			<input name="email" id="email" type="text" class="inp" value="E-mail" onclick="this.value=''" />
+			<BOUCLE_listes(ABOMAILMANS){id_abomailman=1}>
+					[(#EMAIL|abomailman_inputhidden)]
+			</BOUCLE_listes>
+			<input name="abonnement" type="submit" value="Je m'abonne" class="inp" />
+		</div>
+	</form>
+	
+	<a href="#URL_PAGE{listesdiffusions}" class="SuiteTout">Toutes les listes de diffusions</a>
+</div>
+<br />
+</B_listes>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/inc/abomailmans.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/inc/abomailmans.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/inc/abomailmans.php	(revision 76)
@@ -0,0 +1,185 @@
+<?php
+
+/*
+ * Abomailmans
+ * MaZiaR - NetAktiv
+ * tech@netaktiv.com
+ * Printemps 2007
+ * Inspire de Spip-Listes
+*/
+
+
+	function _abomailmans_install(){
+		if ($GLOBALS['spip_version_code']<1.9204){
+			include_spip('base/abomailmans_upgrade');
+			abomailmans_install('install');
+		}
+	}
+	
+	// Fonction utilitaires
+	function abomailmans_abomailman_editable($id_abomailman = 0) {
+		global $connect_statut;
+		return $connect_statut == '0minirezo';
+	}
+	
+	function abomailmans_abomailman_administrable($id_abomailman = 0) {
+		global $connect_statut;
+		return $connect_statut == '0minirezo';
+	}
+
+	
+	//
+	// Afficher une liste de mailmans
+	//
+	
+	function abomailmans_afficher_abomailmans($titre_table, $requete, $icone = '') {
+		global $couleur_claire, $couleur_foncee;
+		global $connect_id_auteur;
+
+		$tous_id = array();
+		
+		$select = $requete['SELECT'] ? $requete['SELECT'] : '*';
+		$from = $requete['FROM'] ? $requete['FROM'] : 'spip_articles AS articles';
+		$join = $requete['JOIN'] ? (' LEFT JOIN ' . $requete['JOIN']) : '';
+		$where = $requete['WHERE'] ? (' WHERE ' . $requete['WHERE']) : '';
+		$order = $requete['ORDER BY'] ? (' ORDER BY ' . $requete['ORDER BY']) : '';
+		$group = $requete['GROUP BY'] ? (' GROUP BY ' . $requete['GROUP BY']) : '';
+		$limit = $requete['LIMIT'] ? (' LIMIT ' . $requete['LIMIT']) : '';
+	
+		$cpt = "$from$join$where$group";
+		$tmp_var = substr(md5($cpt), 0, 4);
+
+		if (!$group){
+			$cpt = spip_fetch_array(spip_query("SELECT COUNT(*) AS n FROM $cpt"));
+			if (! ($cpt = $cpt['n'])) return $tous_id ;
+		}
+		else
+			$cpt = spip_num_rows(spip_query("SELECT $select FROM $cpt"));
+		if ($requete['LIMIT']) $cpt = min($requete['LIMIT'], $cpt);
+	
+		$nb_aff = 1.5 * _TRANCHES;
+		$deb_aff = intval(_request('t_' .$tmp_var));
+	
+		if ($cpt > $nb_aff) {
+			$nb_aff = (_TRANCHES); 
+			$tranches = afficher_tranches_requete($cpt, 3, $tmp_var, '', $nb_aff);
+		}
+		
+		if (!$icone) $icone = "../"._DIR_PLUGIN_ABOMAILMANS."/img_pack/mailman.gif";
+		
+		if ($cpt) {
+			if ($titre_table) echo "<div style='height: 12px;'></div>";
+			echo "<div class='liste'>";
+			bandeau_titre_boite2($titre_table, $icone, $couleur_claire, "black");
+			echo "<table width='100%' cellpadding='4' cellspacing='0' border='0'>";
+	
+			echo $tranches;
+	
+			$result = spip_query("SELECT $select FROM $from$join$where$group$order LIMIT $deb_aff, $nb_aff");
+			$num_rows = spip_num_rows($result);
+	
+			$ifond = 0;
+			$premier = true;
+			
+			$compteur_liste = 0;
+			while ($row = spip_fetch_array($result)) {
+				$vals = '';
+				$id_abomailman = $row['id_abomailman'];
+				$reponses = $row['reponses'];
+				$titre = $row['titre'];
+
+				$tous_id[] = $id_abomailman;
+
+				$retour = parametre_url(self(),'duplique_chart','');
+				$link = generer_url_ecrire('abomailmans_edit',"id_abomailman=$id_abomailman&retour=".urlencode($retour));
+				if ($reponses) {
+					$puce = 'puce-verte-breve.gif';
+				}
+				else {
+					$puce = 'puce-orange-breve.gif';
+				}
+	
+				$s = "<img src='"._DIR_IMG_PACK."$puce' width='7' height='7' border='0'>&nbsp;&nbsp;";
+				$vals[] = $s;
+				
+				//$s .= typo($titre);
+				$s = icone_horizontale(typo($titre), $link,"../"._DIR_PLUGIN_ABOMAILMANS."/img_pack/mailman.gif", "",false);
+				$vals[] = $s;
+				
+				$s = "";
+				$vals[] = $s;
+	
+				$s = "";
+				
+				$s = "";
+				if(abomailmans_abomailman_administrable($id_abomailman)){
+					$link = parametre_url('','exec=abomailmans_edit&supp_abomailman', $id_abomailman);
+					$link = parametre_url($link,'id_abomailman', $id_abomailman);
+					$vals[] = "<a href='$link'>"._T("abomailmans:supprimer")."</a>";
+				}
+				$vals[] = $s;
+
+				$table[] = $vals;
+			}
+			spip_free_result($result);
+			
+			$largeurs = array('','','','','');
+			$styles = array('arial11', 'arial11', 'arial1', 'arial1','arial1');
+			echo afficher_liste($largeurs, $table, $styles);
+			echo "</table>";
+			echo "</div>\n";
+		}
+		return $tous_id;
+	}
+
+
+//* Envoi de mail via Mailman
+	function abomailman_mail ($from_nom, $from_email, $to_nom, $to_email, $subject="", $body="", $html="", $charset="") {	
+		include_spip ("class/phpmailer/class.phpmailer");
+		$mail = new PHPMailer();
+		$mail ->CharSet  =  $charset;
+		if ($html==true) $mail->IsHTML(true);
+		$mail->FromName = $from_nom;
+		$mail->From = $from_email;
+	 	$mail->AddAddress($to_email);
+		$mail->Subject = $subject;
+		$mail->Body = $body;
+
+		if(!$mail->Send())	{
+	  		return false; }
+		else {
+			return true;
+		}
+	}
+
+
+// Afficher l'arbo
+function  abomailman_arbo_rubriques($id_rubrique,  $rslt_id_rubrique="") {
+	global $ran;
+	$ran ++;
+	
+	$marge="&nbsp;&nbsp;&nbsp;|";
+	for ($g=0;$g<$ran;$g++) {
+		if (($ran-1)==0) {
+			$marge="&bull;";
+		}
+		else {
+			$marge .="-"; 
+		}
+	}
+	$marge .="&nbsp;";
+
+	$rqt_rubriques = spip_query ("SELECT id_rubrique, id_parent, titre FROM spip_rubriques WHERE id_parent='".$id_rubrique."'");
+	while ($row = spip_fetch_array($rqt_rubriques)) {
+		$id_rubrique = $row['id_rubrique'];
+		$id_parent = $row['id_parent'];
+		$titre = $row['titre'];
+		$arbo .="<option value='".$id_rubrique."'>" . $marge  . supprimer_numero (typo($titre)) . "</option>";
+		$arbo .= abomailman_arbo_rubriques($id_rubrique,   $rslt_id_parent);
+	}
+	
+	return $arbo;
+	
+}
+
+?>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/js/datePicker.js
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/js/datePicker.js	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/js/datePicker.js	(revision 76)
@@ -0,0 +1,13 @@
+/*
+ * Date picker plugin for jQuery
+ * http://kelvinluck.com/assets/jquery/datePicker
+ *
+ * Copyright (c) 2006 Kelvin Luck (kelvinluck.com)
+ * Licensed under the MIT License:
+ *   http://www.opensource.org/licenses/mit-license.php
+ *
+ * $LastChangedDate: 2007-04-12 10:01:01 +0100 (Thu, 12 Apr 2007) $
+ * $Rev: 1672 $
+ */
+
+eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('8.E=f(){9(1v.23==M){1v.23={3X:f(){}}}4 X=[\'3q\',\'3j\',\'3b\',\'32\',\'45\',\'43\',\'3W\',\'3T\',\'3Q\',\'3M\',\'3E\',\'3x\'];4 1p=[\'3n\',\'3i\',\'3d\',\'3a\',\'35\',\'31\',\'2X\'];4 W={p:\'42\',n:\'3V\',c:\'3S\',b:\'3P 1d\'};4 1h=\'1R\';4 x="/";4 1f=C;4 N;4 G;4 H;4 S;4 A;4 1P=f(2k){4 s=\'0\'+2k;h s.38(s.1C-2)};4 19=f(P){2H(1h){O\'2R\':r=P.1l(x);h t v(r[0],Q(r[1])-1,r[2]);O\'1R\':r=P.1l(x);h t v(r[2],Q(r[1])-1,Q(r[0]));O\'2L\':r=P.1l(x);1N(4 m=0;m<12;m++){9(r[1].1j()==X[m].1J(0,3).1j()){h t v(Q(r[2]),m,Q(r[0]))}}h M;O\'2v\':2D:4 1G=1G?1G:[2,1,0];r=P.1l(x);h t v(r[2],Q(r[0])-1,Q(r[1]))}};4 1F=f(d){4 18=d.g();4 1g=1P(d.k()+1);4 1b=1P(d.14());2H(1h){O\'2R\':h 18+x+1g+x+1b;O\'1R\':h 1b+x+1g+x+18;O\'2L\':h 1b+x+X[d.k()].1J(0,3)+x+18;O\'2v\':2D:h 1g+x+1b+x+18}};4 Y=f(P){4 U=t v();9(P==M){d=t v(U.g(),U.k(),1)}I{d=P;d.2i(1)}9((d.k()<G.k()&&d.g()==G.g())||d.g()<G.g()){d=t v(G.g(),G.k(),1)}I 9((d.k()>H.k()&&d.g()==H.g())||d.g()>H.g()){d=t v(H.g(),H.k(),1)}4 R=8("<j></j>").q(\'u\',\'B-D\');4 1q=17;4 2b=G.14();4 1s=\'\';9(!(d.k()==G.k()&&d.g()==G.g())){1q=C;4 2d=d.k()==0?t v(d.g()-1,11,1):t v(d.g(),d.k()-1,1);4 2c=8("<a></a>").q(\'13\',\'Z:;\').J(W.p).1a(f(){8.E.1S(2d,l);h C});1s=8("<j></j>").q(\'u\',\'1o-37\').J(\'&36;\').o(2c)}4 1B=17;4 1Z=H.14();1H=\'\';9(!(d.k()==H.k()&&d.g()==H.g())){1B=C;4 1X=t v(d.g(),d.k()+1,1);4 1V=8("<a></a>").q(\'13\',\'Z:;\').J(W.n).1a(f(){8.E.1S(1X,l);h C});1H=8("<j></j>").q(\'u\',\'1o-30\').J(\'&2Y;\').2W(1V)}4 1U=8("<a></a>").q(\'13\',\'Z:;\').J(W.c).1a(f(){8.E.2O()});R.o(8("<j></j>").q(\'u\',\'1o-2S\').o(1U),8("<2Q></2Q>").J(X[d.k()]+\' \'+d.g()));4 1T=8("<1n></1n>");1N(4 i=N;i<N+7;i++){4 L=i%7;4 1k=1p[L];1T.o(8("<2P></2P>").q({\'41\':\'40\',\'3Z\':1k,\'1Q\':1k,\'u\':(L==0||L==6?\'2M\':\'L\')}).J(1k.1J(0,1)))}4 1O=8("<2K></2K>");4 2G=(t v(d.g(),d.k()+1,0)).14();4 y=N-d.3U();9(y>0)y-=7;4 2F=(t v()).14();4 2B=d.k()==U.k()&&d.g()==U.g();4 w=0;2z(w++<6){4 1K=8("<1n></1n>");1N(4 i=0;i<7;i++){4 L=(N+i)%7;4 16={\'u\':(L==0||L==6?\'2M \':\'L \')};9(y<0||y>=2G){V=\' \'}I 9(1q&&y<2b-1){V=y+1;16[\'u\']+=\'2x\'}I 9(1B&&y>1Z-1){V=y+1;16[\'u\']+=\'2x\'}I{d.2i(y+1);4 1I=1F(d);V=8("<a></a>").q({\'13\':\'Z:;\',\'2A\':1I}).J(y+1).1a(f(e){8.E.2C(8.q(l,\'2A\'),l);h C})[0];9(S&&S==1I){8(V).q(\'u\',\'3R\')}}9(2B&&y+1==2F){16[\'u\']+=\'U\'}1K.o(8("<2t></2t>").q(16).o(V));y++}1O.o(1K)}R.o(8("<2s></2s>").q(\'3O\',2).o("<1L></1L>").2q("1L").o(1T).1M().o(1O.3N())).o(1s).o(1H);9(8.2p.2o){4 1D=[\'<1D u="3L" 3K="-1" 3J="3I.J" \',\'3F="1x:2m; 3D:3C;\',\'3B: 0;\',\'3A:0;\',\'z-3z:-1; 3y:3w(3v=\\\'0\\\');\',\'3u:2h;\',\'3t:2h"/>\'].3s(\'\');R.o(1y.3r(1D))}R.2g({\'1x\':\'2m\'});h R[0]};4 10=f(c){8(\'j.B-D a\',A[0]).1w();8(\'j.B-D\',A[0]).2f();8(\'j.B-D\',A[0]).3p();A.o(c)};4 T=f(){8(\'j.B-D a\',A).1w();8(\'j.B-D\',A).2f();8(\'j.B-D\',A).2g({\'1x\':\'3o\'});8(1y).1w(\'2e\',1u);3m A;A=3l};4 3k=f(e){4 2a=e.29?e.29:(e.28?e.28:0);9(2a==27){T()}h C};4 1u=f(e){9(!1f){4 1t=8.2p.2o?1v.3h.3g:e.1t;4 26=8(1t).1m(\'j.B-D-1r\');9(26.3f(0).3e!=\'1d-1e-25\'){T()}}};h{24:f(){h W.b},2j:f(){9(A){T()}l.3c();4 F=8(\'F\',8(l).1m(\'F\')[0])[0];G=F.1A;H=F.15;N=F.N;A=8(l).1M().2q(\'>j.B-D-1r\');4 d=8(F).22();9(d!=\'\'){9(1F(19(d))==d){S=d;10(Y(19(d)))}I{S=C;10(Y())}}I{S=C;10(Y())}8(1y).2l(\'2e\',1u)},1S:f(d,e){1f=17;10(Y(d));1f=C},2C:f(d,K){39=d;4 $1z=8(\'F\',8(K).1m(\'F\')[0]);$1z.22(d);$1z.3G(\'3H\');T(K)},2O:f(){T(l)},2u:f(i){i.21=17},2n:f(i){h i.21!=M},34:f(20,1E){1h=20.1j();x=1E?1E:"/"},33:f(1Y,2r,1W){1p=1Y;X=2r;W=1W},2J:f(i,w){9(w==M)w={};9(w.2y==M){i.1A=t v()}I{i.1A=19(w.2y)}9(w.2w==M){i.15=t v();i.15.2Z(i.15.g()+5)}I{i.15=19(w.2w)};i.N=w.2I==M?0:w.2I}}}();8.2E.1m=f(s){4 K=l;2z(17){9(8(s,K[0]).1C>0){h(K)}K=K.1M();9(K[0].1C==0){h C}}};8.2E.E=f(a){l.2V(f(){9(l.3Y.1j()!=\'F\')h;8.E.2J(l,a);9(!8.E.2n(l)){4 1i=8.E.24();4 1c;9(a&&a.2U){1c=8(l).q(\'1Q\',1i).2T(\'1d-1e\')}I{1c=8("<a></a>").q({\'13\':\'Z:;\',\'u\':\'1d-1e\',\'1Q\':1i}).o("<2N>"+1i+"</2N>")}8(l).44(\'<j u="1d-1e-25"></j>\').46(8(\'<j></j>\').q(\'u\',\'B-D-1r\').o(8("<j></j>").q({\'u\':\'B-D\'})),1c);1c.2l(\'1a\',8.E.2j);8.E.2u(l)}});h l};',62,255,'||||var||||jQuery|if||||||function|getFullYear|return||div|getMonth|this|||append||attr|dParts||new|class|Date||dateSeparator|curDay||_openCal|popup|false|calendar|datePicker|input|_firstDate|_lastDate|else|html|ele|weekday|undefined|_firstDayOfWeek|case|dIn|Number|jCalDiv|_selectedDate|_closeDatePicker|today|dayStr|navLinks|months|_getCalendarDiv|javascript|_draw|||href|getDate|_endDate|atts|true|dY|_strToDate|click|dD|calBut|date|picker|_drawingMonth|dM|dateFormat|chooseDate|toLowerCase|day|split|findClosestParent|tr|link|days|firstMonth|wrapper|prevLinkDiv|target|_checkMouse|window|unbind|display|document|theInput|_startDate|finalMonth|length|iframe|separator|_dateToStr|parts|nextLinkDiv|dStr|substr|thisRow|thead|parent|for|tBody|_zeroPad|title|dmy|changeMonth|headRow|closeLink|nextLink|aNavLinks|nextMonth|aDays|lastDate|format|_inited|val|console|getChooseDateStr|holder|cp||which|keyCode|key|firstDate|prevLink|lastMonth|mousedown|empty|css|3000px|setDate|show|num|bind|block|isInited|msie|browser|find|aMonths|table|td|setInited|mdy|endDate|inactive|startDate|while|rel|thisMonth|selectDate|default|fn|todayDate|lastDay|switch|firstDayOfWeek|setDateWindow|tbody|dmmy|weekend|span|closeCalendar|th|h3|ymd|close|addClass|inputClick|each|prepend|Saturday|gt|setFullYear|next|Friday|April|setLanguageStrings|setDateFormat|Thursday|lt|prev|substring|selectedDate|Wednesday|March|blur|Tuesday|className|get|srcElement|event|Monday|February|_handleKeys|null|delete|Sunday|none|remove|January|createElement|join|height|width|Opacity|Alpha|December|filter|index|left|top|absolute|position|November|style|trigger|change|blank|src|tabindex|bgiframe|October|children|cellspacing|Choose|September|selected|Close|August|getDay|Next|July|log|nodeName|abbr|col|scope|Prev|June|wrap|May|after'.split('|'),0,{}))
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/js/datePicker_myScripts.js
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/js/datePicker_myScripts.js	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/js/datePicker_myScripts.js	(revision 76)
@@ -0,0 +1,50 @@
+// JavaScript Document
+
+$(document).ready(init);
+function init()
+{
+
+	// OPTIONALLY SET THE DATE FORMAT FOR ALL DATE PICKERS ON THIS PAGE
+	$.datePicker.setDateFormat('ymd', '-');
+	
+	// OPTIONALLY SET THE LANGUAGE DEPENDANT COPY IN THE POPUP CALENDAR
+	/**/
+	$.datePicker.setLanguageStrings(
+		['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'],
+		['Janvier', 'F&eacute;vrier', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Ao&ucirc;t', 'Septembre', 'Octobre', 'Novembre', 'D&eacute;cembre'],
+		{p:'Pr&eacute;c&egrave;dent', n:'Suivant', c:'Fermer', b:'Choisir cette date'}
+	);
+	
+	
+	// DIFFERENT OPTIONS SHOWING HOW YOU MIGHT INITIALISE THE DATE PICKER (UNCOMMENT ONE AT A TIME) //
+	
+	// all inputs with a class of "date-picker" have a date picker which lets you pick any date in the future
+	//$('input.date-picker').datePicker();
+	// OR
+	// all inputs with a class of "date-picker" have a date picker which lets you pick any date after 05/03/2006
+	//$('input.date-picker').datePicker({startDate:'05/03/2006'});
+	// OR
+	// all inputs with a class of "date-picker" have a date picker which lets you pick any date from today till 05/011/2006
+	//$('input.date-picker').datePicker({endDate:'05/11/2006'});
+	// OR
+	// all inputs with a class of "date-picker" have a date picker which lets you pick any date from 05/03/2006 till 05/11/2006
+	//$('input.date-picker').datePicker({startDate:'05/03/2006', endDate:'05/11/2006'});
+	// OR 
+	// the input with an id of "date" will have a date picker that lets you pick any day in the future...
+	//$('input#date').datePicker();
+	// ...and the input with an id of "date2" will have a date picker that lets you pick any day between the 02/11/2006 and 13/11/2006
+	$('input#date').datePicker({startDate:'01-01-2000'});
+
+	/*
+	// testing code to check the change event is fired...
+	$('input#date1').bind(
+		'change',
+		function()
+		{
+			alert($(this).val());
+		}
+	);
+	*/
+	
+	// END DIFFERENT OPTIONS //
+}
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/js/jQuery_myScripts.js
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/js/jQuery_myScripts.js	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/js/jQuery_myScripts.js	(revision 76)
@@ -0,0 +1,32 @@
+// JavaScript Document
+
+
+
+
+$(document).ready(function(){
+$("#ajax-loader").hide();
+	$("#ajax-loader").ajaxStart(function(){
+			$(this).show();
+	});
+		
+	$("#ajax-loader").ajaxStop(function(){
+		$(this).hide();
+	});
+
+	$("#template").submit(function(){
+		var	 data = $('input,textarea,radio,select, checkbox', this).serialize();
+		$.ajax({ type: "POST", 
+					url: "/ecrire/?exec=abomailmans_affiche_template", 
+					data: data, 
+					success: function(msg){  $("#apercu").html(msg); }
+			});
+		return false;
+	});
+});
+
+
+
+
+
+
+ 
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/lang/abomailmans_fr.php
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/lang/abomailmans_fr.php	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/lang/abomailmans_fr.php	(revision 76)
@@ -0,0 +1,35 @@
+<?php
+
+// This is a SPIP language file  --  Ceci est un fichier langue de SPIP
+
+$GLOBALS[$GLOBALS['idx_lang']] = array(
+		'abomailmans' 					=> 'Mailmans',
+		'icone_ajouter_liste'			=> 'Ajouter une nouvelle liste',
+		'icone_envoyer_mail_liste'		=> 'Envoyer un e-mail aux listes &agrave; partir du contenu de ce site',
+		'les_listes_mailmans'			=> 'Les listes mailmans renseign&eacute;es',
+		
+		
+		'titre_abomailman'				=> 'Titre de la liste',
+		'emailliste_abomailman'			=> 'L\'adresse e-mail de la liste',
+		'supprimer'						=> 'Supprimer',
+
+		'nom'							=> 'Nom',
+		'prenom'						=> 'Pr&eacute;nom',
+		'email_abonnement'				=> 'Votre adresse e-mail',
+		'je_m_abonne'					=> 'Je m\'abonne &agrave; cette liste : ',
+
+		'message_confirmation'			=> 'Une demande de confirmation de votre abonnement vient d\'&ecirc;tre envoy&eacute;e par cette liste  : ',
+		'email_oublie'					=> 'Vous avez oubli&eacute; votre adresse e-mail',
+
+		'template'						=> 'Choisissez le mod&egrave;le et son contnu',
+		'sujet'							=> 'Sujet du courrier',
+		'rubrique'						=> 'Et lister les articles de la rubrique',
+		'mot'							=> 'Et lister les articles du mot cl&eacute;',
+		'message'						=> 'Introduction &agrave; votre courrier, avant le contenu issu du site',
+		'envoi_apercu'					=> 'Aper&ccedil;u',
+		'envoi_confirmer'				=> 'Confirmer et envoyer',
+		'envoyer_mailmans'				=> 'S&eacute;l&eacute;ctionner le mod&egrave;le et son contenu'
+);
+
+
+?>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/plugin.xml
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/plugin.xml	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/plugin.xml	(revision 76)
@@ -0,0 +1,49 @@
+<plugin>
+	<nom> <!-- Nom du plugin -->
+	Abonnement Ã  des listes de diff. mailman
+	</nom>
+	<icon></icon>
+	<auteur>	<!-- Auteur du plugin -->
+	MaZiaR [NetAktiv->http://www.netaktiv.com]
+	</auteur>
+	<version>
+	0.1
+	</version>
+	<etat>
+	dev
+	</etat>
+	<description>
+	Ce plugin permet via une balise #FORMULAIRE_ABOMAILMAN d&rsquo;afficher un formulaire d&rsquo;abonnement &agrave; l&rsquo;ensemble des listes renseign&eacute;es Mailman.
+	Cette inscription se fait via l&rsquo;interface priv&eacute;e de SPIP par le menu &laquo; Edition &gt; Abomailmans &gt; les listes de diffusions mailman &raquo;
+	Ensuite il vous est possible de s&eacute;lectionner des articles de votre SPIP, par des crit&egrave;res de date, de rubrique et/ou de mot cl&eacute; et envoyer leurs contenus &agrave; ces listes, en utilisant des squelettes de mise en page du contenu.
+    Le lien avec les listes Mailman se fait par des envois d&rsquo;e-mail.
+	
+	</description>
+	<lien>[Spip-Contrib->http://www.spip-contrib.net/Abomailmans-pour-s-abonner-a-des]</lien> <!-- URI de documentation -->
+	<options> <!-- fichier charge a chaque hit -->
+	abomailmans_options.php
+	</options>
+	<fonctions> <!-- fichier charge a chaque hit -->
+		abomailmans_fonctions.php
+	</fonctions>
+	<prefix> 
+		abomailmans
+	</prefix>
+	<install>base/abomailmans_upgrade.php</install>
+	<!-- Definitions des fonctions qui s'inserent dans les pipelines -->
+	<pipeline>
+		<nom>ajouter_boutons</nom>
+		<inclure>abomailmans_interface.php</inclure>
+	</pipeline>
+
+	<pipeline>
+		<nom>header_prive</nom>
+		<inclure>abomailmans_interface.php</inclure>
+	</pipeline>
+
+<pipeline>
+		<nom>insert_head</nom>
+		<inclure>abomailmans_interface.php</inclure>
+	</pipeline>
+
+	</plugin>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/templates/bulletin-Alternatives.html
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/templates/bulletin-Alternatives.html	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/templates/bulletin-Alternatives.html	(revision 76)
@@ -0,0 +1,228 @@
+#CACHE{0}
+#HTTP_HEADER{Content-Type: text/html}
+<style>
+/* CSS Document */
+body {
+	margin-top:5px;
+	background: #fff;
+	font: 1em 'Trebuchet MS',Arial, Helvetica, sans-serif;
+	color:#000000;}
+
+a {
+	text-decoration:none;
+	color:#A71D34;}
+
+a:hover {
+	color:#A71D34;
+	text-decoration: underline;}
+
+/* Espaceur de blocs */
+.nettoyeur { clear: both; margin: 0; padding: 0; border: none; height: 0; line-height: 1px; font-size: 1px; }
+
+a img {
+	border:0;}
+
+
+
+p.spip {
+	margin:0 0 1em 0 !important;
+	padding:0 !important;}
+
+h3.spip {
+	font-size:1em !important;
+	font-weight:bold !important;
+	margin:1em 0 0 0 !important;}
+
+
+.header {
+	padding:.8em;
+	text-align:center;
+	background-color:white;}
+
+.footer {
+	padding:.8em;
+	background-color:white;
+	text-align:center;}
+
+.LogoPCF {
+	position: relative;
+	display: inline;
+	margin: 22px 0 0 30px;
+	padding: 0;
+	float: left;}
+
+.NomSite {
+	text-align:center;
+	margin:15px 0 0 150px;
+	padding:0;
+	font-family:Verdana, Arial, Helvetica, sans-serif;
+	font-size:12px;
+	color:black;}
+
+.NomSite a {
+	color:black;}
+
+.NomSite a:hover {
+	color:black;}
+
+
+.liberezvous {
+	padding:5px;
+	background-color:#FFFFFF;
+	border:1px solid #E00000;
+	text-align:center;
+	margin-bottom:5px;
+}
+
+.BandoSite{
+	position: relative;
+	top: 4px;
+	padding:0;
+	margin: 0 15px 0 15px;
+	float:left;
+	z-index: 0;}
+
+.LogoBulletin{
+	position: relative;
+	top: 4px;
+	padding:0;
+	margin: 0 15px 0 15px;
+	float:center;
+	z-index: 0;}
+
+.container{
+	margin:1em 2em 2em 1em;
+	padding-bottom:.2em;
+	text-align:center;}
+
+.liste {
+	width:550px;
+	text-align:left;}
+
+.logo {
+	float:left;
+	margin:12px 0.5em 0 0;}
+
+/* 
+p > a, b > a {
+	text-decoration:underline !important;
+	color:#E00000;}
+
+p > a:hover, b > a:hover {
+	font-style: italic !important;}
+*/
+
+p {
+	font-size:12px;
+	color:#000000;
+	line-height:14px;
+	text-align:justify;
+	margin:12px 0 2em 0;}
+
+
+.ligne {
+	border-bottom:1px solid #A71D34;
+	margin-bottom:1em;}
+
+.Suite_02 {
+	float:right;
+	font-size:12px;
+	background-image:url(#URL_SITE_SPIP/squelettes/icono/fl_o.gif);
+	background-repeat:no-repeat;
+	padding:0 0 0 15px;
+	margin:.5em 0 0 0;}
+
+.Suite_02 a {
+	color:#A71D34;}
+
+.logo {
+	float:left;
+	margin:12px 0.5em 0 0;}
+
+h1 {
+	font-weight:bold;
+	font-size:25px;
+	margin:0;
+	padding:0;
+	color:#A71D34;}
+
+
+h2 {
+	font-weight:bold;
+	font-size:15px;
+	margin:0;
+	padding:0;
+	color:#000000;}
+
+h3 {
+	font-weight:normal;
+	font-size:12px;
+	margin:0;
+	padding:0;
+	color:#000000;}
+
+h4 {
+	font-size:12px;
+	margin:1.5em 2em 0 1.5em;
+	text-transform: uppercase;}
+.date{
+	
+	background-color:#eeeeee;
+	padding:0.2em;
+	font-style:italic;}
+
+.avis{
+font-size: 10px;}
+
+</style>
+
+	<BOUCLE_rubrique_bulletin(RUBRIQUES) {id_rubrique}>
+		<div class="avis">
+		<a href="#URL_RUBRIQUE">Cliquez ici </a>
+		si ce message ne s'affiche pas correctement <br />
+		</div>
+	</BOUCLE_rubrique_bulletin>
+
+<div class="header">
+        <BOUCLE_rubrique_bulletin_logo(RUBRIQUES) {lang?} {titre_mot=bulletin_alternatives}>
+	   <div class="LogoBulletin"><a href="#URL_SITE_SPIP">[(#LOGO_RUBRIQUE||liens_absolus|reduire_image{525,0}|inserer_attribut{'alt',Bulletin Alternatives})]</a></div>
+	   <br class="nettoyeur" />
+	</BOUCLE_rubrique_bulletin_logo>
+</div>
+<table border="0" cellspacing="0" cellpadding="0" class="liste" align="center">
+  <tr>
+    <td>
+		<h1>#ENV{sujet}</h1>
+		<p><b>#ENV{message}</b></p>
+		<div class="ligne">&nbsp;</div>
+
+		<B_articlesDate>
+			<BOUCLE_articlesDate(ARTICLES){age_relatif< 0}{id_rubrique ?}{id_mot ?}{par titre}>
+				[<h3>(#SURTITRE|textebrut|supprimer_numero) :</h3>]
+				 <h2>[(#TITRE|textebrut|supprimer_numero)]</h2>
+				[(#LOGO_ARTICLE||reduire_image{300, 0}|liens_absolus|inserer_attribut{class,logo})]
+				[<p>(#CHAPO|liens_absolus)</p>]
+				[<p>(#TEXTE|liens_absolus)</p>]
+				<br class="nettoyeur" />
+				<div class="ligne">&nbsp;</div>
+			</BOUCLE_articlesDate>
+		</B_articlesDate>
+
+
+		<//B_articlesDate>
+	</td>
+  </tr>
+</table>
+
+<div class="footer">
+	
+	<a href="#URL_SITE_SPIP">[(#LOGO_SITE_SPIP||liens_absolus|reduire_image{405,0}|inserer_attribut{'alt',Alternatives})]</a>
+	<br class="nettoyeur" />
+	<div class="NomSite">[(#DESCRIPTIF_SITE_SPIP)]</div>
+	<br class="nettoyeur" />
+</div>
+
+<div class="avis">
+Pour vous dÃ©sabonner de la liste de diffusion d'Alternatives,<br />
+envoyez un courriel Ã  l'adresse suivante: <a href="mailto:diffusion-leave@alternatives.ca?subject=je me desabonne">diffusion-leave@alternatives.ca</a>
+</div>
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/templates/bulletin-x-stagiaires.html
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/templates/bulletin-x-stagiaires.html	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/templates/bulletin-x-stagiaires.html	(revision 76)
@@ -0,0 +1,225 @@
+#CACHE{0}
+#HTTP_HEADER{Content-Type: text/html}
+<style>
+/* CSS Document */
+body {
+	margin-top:5px;
+	background: #fff;
+	font: 1em 'Trebuchet MS',Arial, Helvetica, sans-serif;
+	color:#000000;}
+
+a {
+	text-decoration:none;
+	color:#A71D34;}
+
+a:hover {
+	color:#A71D34;
+	text-decoration: underline;}
+
+/* Espaceur de blocs */
+.nettoyeur { clear: both; margin: 0; padding: 0; border: none; height: 0; line-height: 1px; font-size: 1px; }
+
+a img {
+	border:0;}
+
+
+
+p.spip {
+	margin:0 0 1em 0 !important;
+	padding:0 !important;}
+
+h3.spip {
+	font-size:1em !important;
+	font-weight:bold !important;
+	margin:1em 0 0 0 !important;}
+
+
+.header {
+	padding:.8em;
+	text-align:center;
+	background-color:white;}
+
+.footer {
+	padding:.8em;
+	background-color:white;
+	text-align:center;}
+
+.LogoPCF {
+	position: relative;
+	display: inline;
+	margin: 22px 0 0 30px;
+	padding: 0;
+	float: left;}
+
+.NomSite {
+	text-align:center;
+	margin:15px 0 0 150px;
+	padding:0;
+	font-family:Verdana, Arial, Helvetica, sans-serif;
+	font-size:12px;
+	color:black;}
+
+.NomSite a {
+	color:black;}
+
+.NomSite a:hover {
+	color:black;}
+
+
+.liberezvous {
+	padding:5px;
+	background-color:#FFFFFF;
+	border:1px solid #E00000;
+	text-align:center;
+	margin-bottom:5px;
+}
+
+.BandoSite{
+	position: relative;
+	top: 4px;
+	padding:0;
+	margin: 0 15px 0 15px;
+	float:left;
+	z-index: 0;}
+
+.LogoBulletin{
+	position: relative;
+	top: 4px;
+	padding:0;
+	margin: 0 15px 0 15px;
+	float:center;
+	z-index: 0;}
+
+.container{
+	margin:1em 2em 2em 1em;
+	padding-bottom:.2em;
+	text-align:center;}
+
+.liste {
+	width:550px;
+	text-align:left;}
+
+.logo {
+	float:left;
+	margin:12px 0.5em 0 0;}
+
+/* 
+p > a, b > a {
+	text-decoration:underline !important;
+	color:#E00000;}
+
+p > a:hover, b > a:hover {
+	font-style: italic !important;}
+*/
+
+p {
+	font-size:12px;
+	color:#000000;
+	line-height:14px;
+	text-align:justify;
+	margin:12px 0 2em 0;}
+
+
+.ligne {
+	border-bottom:1px solid #A71D34;
+	margin-bottom:1em;}
+
+.Suite_02 {
+	float:right;
+	font-size:12px;
+	background-image:url(#URL_SITE_SPIP/squelettes/icono/fl_o.gif);
+	background-repeat:no-repeat;
+	padding:0 0 0 15px;
+	margin:.5em 0 0 0;}
+
+.Suite_02 a {
+	color:#A71D34;}
+
+.logo {
+	float:left;
+	margin:12px 0.5em 0 0;}
+
+h1 {
+	font-weight:bold;
+	font-size:25px;
+	margin:0;
+	padding:0;
+	color:#A71D34;}
+
+
+h2 {
+	font-weight:bold;
+	font-size:15px;
+	margin:0;
+	padding:0;
+	color:#000000;}
+
+h3 {
+	font-weight:normal;
+	font-size:12px;
+	margin:0;
+	padding:0;
+	color:#000000;}
+
+h4 {
+	font-size:12px;
+	margin:1.5em 2em 0 1.5em;
+	text-transform: uppercase;}
+.date{
+	
+	background-color:#eeeeee;
+	padding:0.2em;
+	font-style:italic;}
+
+
+
+</style>
+
+
+<div class="header">
+	<div class="LogoBulletin">
+	[(#LOGO_SITE_SPIP||liens_absolus|reduire_image{405,0}|inserer_attribut{'alt',Bulletin X-Stagiaires})]
+	</div>
+	<br class="nettoyeur" />
+</div>
+<table border="0" cellspacing="0" cellpadding="0" class="liste" align="center">
+  <tr>
+    <td>
+		<h1>#ENV{sujet}</h1>
+		<p><b>#ENV{message}</b></p>
+		<div class="ligne">&nbsp;</div>
+
+		<B_Rubrique>
+			<BOUCLE_Rubrique(RUBRIQUES){id_rubrique ?}>
+				<BOUCLE_SousRubrique(RUBRIQUES){id_parent}{par titre}>
+					 <h1><a href="#URL_RUBRIQUE">[(#TITRE|textebrut|supprimer_numero)]</a></h1>
+
+			<B_articlesDate>
+				<BOUCLE_articlesDate(ARTICLES){id_rubrique}{par titre}>
+				[<h3>(#SURTITRE|textebrut|supprimer_numero) :</h3>]
+				 <h2>[(#TITRE|textebrut|supprimer_numero)]</h2>
+				[(#LOGO_ARTICLE||reduire_image{300, 0}|liens_absolus|inserer_attribut{class,logo})]
+				[<p>(#CHAPO|liens_absolus)</p>]
+				<a href="[(#URL_ARTICLE|url_absolue)]" class="Suite_02">Suite</a>
+				<br class="nettoyeur" />
+				<div class="ligne">&nbsp;</div>
+				</BOUCLE_articlesDate>
+			</B_articlesDate>
+
+
+				</BOUCLE_SousRubrique>
+			</BOUCLE_Rubrique>
+		</B_Rubrique>
+
+	</td>
+  </tr>
+</table>
+
+<div class="footer">
+	
+	<a href="#URL_SITE_SPIP">[(#LOGO_SITE_SPIP||liens_absolus|reduire_image{405,0}|inserer_attribut{'alt',Alternatives})]</a>
+	<br class="nettoyeur" />
+	<div class="NomSite">[(#DESCRIPTIF_SITE_SPIP)]</div>
+	<br class="nettoyeur" />
+</div>
+
Index: trunk/spip/esqueleto-redcta/plugins/zabomailmans/templates/nouveautes.html
===================================================================
--- trunk/spip/esqueleto-redcta/plugins/zabomailmans/templates/nouveautes.html	(revision 76)
+++ trunk/spip/esqueleto-redcta/plugins/zabomailmans/templates/nouveautes.html	(revision 76)
@@ -0,0 +1,221 @@
+#CACHE{0}
+#HTTP_HEADER{Content-Type: text/html}
+[(#REM)
+/**********************************************************
+* Ce squelette pour Abomailmains
+* Attention a :                             
+* - ne pas envoyer des gabarits de plus de 10Ko
+* - ne pas placer de balises html <html><body> ni de fermeture </body></html>
+* ils seront ajoutes automatiquement a l'envoi du mail 
+* - mettre les style  CSS directement dans les balises pour etre sur qu'ils seront interpretes (meme par les webmails)
+* - les urls et liens images seront automatiquement converties en absolues
+*  ex. rubrique5.html -> http://www.monsite.org/rubrique5.html
+* Inspire du plugin Spip-Listes
+***********************************************************/
+<style>
+/* CSS Document */
+body {
+	margin-top:5px;
+	background: #fff;
+	font: 1em 'Trebuchet MS',Arial, Helvetica, sans-serif;
+	color:#000000;}
+
+a {
+	text-decoration:none;
+	color:#000000;}
+
+a:hover {
+	color: #FF0000;
+	text-decoration: underline;}
+
+/* Espaceur de blocs */
+.nettoyeur { clear: both; margin: 0; padding: 0; border: none; height: 0; line-height: 1px; font-size: 1px; }
+
+a img {
+	border:0;}
+
+
+
+p.spip {
+	margin:0 0 1em 0 !important;
+	padding:0 !important;}
+
+h3.spip {
+	font-size:1em !important;
+	font-weight:bold !important;
+	margin:1em 0 0 0 !important;}
+
+
+.header {
+	padding:.8em;
+	background-color:#E00000;}
+
+.LogoPCF {
+	position: relative;
+	display: inline;
+	margin: 22px 0 0 30px;
+	padding: 0;
+	float: left;}
+
+.NomSite {
+	text-align:left;
+	margin:0 0 0 30px;
+	padding:0;
+	font-family:Verdana, Arial, Helvetica, sans-serif;
+	font-size:12px;
+	color:#FFF;}
+
+.NomSite a {
+	color:#FFF;}
+
+.NomSite a:hover {
+	color:#FFFF00;}
+
+
+.liberezvous {
+	padding:5px;
+	background-color:#FFFFFF;
+	border:1px solid #E00000;
+	text-align:center;
+	margin-bottom:5px;
+}
+
+.BandoSite{
+	position: relative;
+	top: 4px;
+	padding:0;
+	margin: 0 15px 0 15px;
+	float:left;
+	z-index: 0;}
+
+.container{
+	margin:1em 2em 2em 1em;
+	padding-bottom:.2em;
+	text-align:center;}
+
+.liste {
+	width:500px;
+	text-align:left;}
+
+.logo {
+	float:left;
+	margin:12px 0.5em 0 0;}
+
+
+
+
+p > a, b > a {
+	text-decoration:underline !important;
+	color:#E00000;}
+
+p > a:hover, b > a:hover {
+	font-style: italic !important;}
+
+p {
+	font-size:12px;
+	color:#000000;
+	line-height:14px;
+	text-align:justify;
+	margin:12px 0 2em 0;}
+
+
+.ligne {
+	border-bottom:1px solid #E00000;
+	margin-bottom:1em;}
+
+.Suite_02 {
+	float:right;
+	font-size:12px;
+	background-image:url(#URL_SITE_SPIP/squelettes/icono/fl_o.gif);
+	background-repeat:no-repeat;
+	padding:0 0 0 15px;
+	margin:.5em 0 0 0;}
+
+.Suite_02 a {
+	color:#E00000;}
+
+.logo {
+	float:left;
+	margin:12px 0.5em 0 0;}
+
+
+h3 {
+	font-weight:normal;
+	font-size:12px;
+	margin:0;
+	padding:0;
+	color:#000000;}
+
+h2 {
+	font-weight:normal;
+	font-size:15px;
+	margin:0;
+	padding:0;
+	color:#000000;}
+
+h4 {
+	font-size:12px;
+	margin:1.5em 2em 0 1.5em;
+	text-transform: uppercase;}
+.date{
+	
+	background-color:#eeeeee;
+	padding:0.2em;
+	font-style:italic;}
+
+
+
+</style>
+
+
+<div class="header">
+	<a href="#URL_SITE_SPIP"><img src="#URL_SITE_SPIP/squelettes/icono/logo.gif" alt="Parti Communiste Français" class="LogoPCF"></a>		
+	<div class="BandoSite">[(#LOGO_SITE_SPIP||liens_absolus|reduire_image{405,0})]</div>
+	<br class="nettoyeur" />
+	<div class="NomSite">[(#NOM_SITE_SPIP)][&nbsp;|&nbsp;(#DESCRIPTIF_SITE_SPIP)]</div>
+	<br class="nettoyeur" />
+</div>
+<br />
+<table border="0" cellspacing="0" cellpadding="0" class="liste" align="center">
+  <tr>
+    <td>
+		<h2>#ENV{sujet}</h2>
+		<p><b>#ENV{message}</b></p>
+		<div class="ligne">&nbsp;</div>
+
+		<B_articlesDate>
+			<BOUCLE_articlesDate(ARTICLES){age_relatif< 0}{id_rubrique ?}{id_mot ?}{par date}{inverse}>
+				<!-- Affiche logo si pas vidéo -->
+				<BOUCLE_agenda(MOTS){titre=AGENDA}{id_article}>#SET{type, agenda}</BOUCLE_agenda>
+				<!-- SI agenda -->
+				[(#GET{type}|!={'agenda'}|?{'',' '})
+					[<div class="jour">[(#DATE_REDAC|nom_jour)] (#DATE_REDAC|affdate_jourcourt)[ - (#DATE_REDAC|affdate{'H:i'})]</div>]
+				]
+				[<h3>(#SURTITRE|textebrut|supprimer_numero) :</h3>]
+				 <h2>[(#TITRE|textebrut|supprimer_numero)]</h2>
+				[(#LOGO_ARTICLE||reduire_image{300, 0}|liens_absolus|inserer_attribut{class,logo})]
+				[<p><b>(#CHAPO|liens_absolus)</b></p>] 
+				<!-- SI PAS agenda -->
+				[(#GET{type}|=={'agenda'}|?{'',' '})<p class="date">[(#DATE|affdate)]</p>]
+				<a href="[(#URL_ARTICLE|url_absolue)]" class="Suite_02">Lire l'article</a>
+				<br class="nettoyeur" />
+				<div class="ligne">&nbsp;</div>
+			</BOUCLE_articlesDate>
+		</B_articlesDate>
+
+
+		<//B_articlesDate>
+	</td>
+  </tr>
+</table>
+<div class="header">
+<div class="liberezvous"><a href="http://www.framasoft.net/rubrique2.html" target="_blank"><img src="#URL_SITE_SPIP/squelettes/icono/Liberez-vous_Bleu_Ptt.gif" class="LogoPCF"></a>	<br class="nettoyeur" /></div>
+
+</div>
+
+
+
+
+
+
+
