Trace: » Utiliser un template pour les Mails de Suivis des Tickets

Utiliser un template pour les Mails de Suivis des Tickets

Cet article n'est plus d'actualité sur les versions de GLPI supérieures ou égales à 0.78.

  • Par Cédric Richez
  • Modif multilingue par sbonn

1 - Le pourquoi

Cette manipulation permet d'utiliser un template lors de l'envoi de suivis par mail, afin de pouvoir mieux en gérer l'apparence. Cela permet par exemple, si votre société possède un portail intranet, d'adapter le template de mail pour qu'il corresponde.

2 - Comment

Le template de mail

Premièrement il faut créer un fichier nommé mail.tpl contenant le code suivant (code d'exemple vous pouvez l'adapter à vos besoins puisque c'est un template), dans le répertoire files

0.7
<html>
	<head>
	<style type="text/css">
		body {font-family: Verdana;font-size: 11px;text-align: left;}
		td {font-family: Verdana;font-size: 11px;text-align: left;}
		#description{
			font-family: verdana;
			font-size: 11px;
			color: inherit;
			background: #FFF;
			border-style: solid;
			border-color:#A2BB8D;
			border-width : 1px 0px 1px 0px;
			font-weight:none;
			text-align: center;
		}
 
		#page{
			background-color :#FFF;
			width:590px;
		}
 
		#top{
			font-family: verdana;
			font-size : 12px;
			text-align: center;
		}
 
		#signature{
			width:590px;
			text-align: center;
			font-family: verdana;
			font-size : 11px;	
		}
	</style>
	</head>
	<body>
	<div align='center'>
		<div id='page'>
			<div id='top'>
                        <br>##t_link##: ##link##
			<br><br>
			- ##ticketFollowUp## -
			</div><br><br>
			<div id='description'>
			<br>##title##<br><br>
			<table width='590px' border=1>
			<tr><td width='auto' bgcolor='#A2BB8D'>##t_author##</td><td>##author##</td><td  width='auto' bgcolor='#A2BB8D'>##t_date##</td><td>##date##</td></tr>
			<tr><td  width='auto' bgcolor='#A2BB8D'>##t_request##</td><td>##request##</td><td  width='auto' bgcolor='#A2BB8D'>##t_equipment##</td><td>##equipment##</td></tr>
			<tr><td  width='auto' bgcolor='#A2BB8D'>##t_status## </td><td>##status##</td><td  width='auto' bgcolor='#A2BB8D'>##t_assign##</td><td>##assign##</td></tr>
			<tr><td  width='auto' bgcolor='#A2BB8D'>##t_priority##</td><td>##priority##</td><td  width='auto' bgcolor='#A2BB8D'>##t_contact##</td><td>##contact##</td></tr>
			<tr><td  width='auto' bgcolor='#A2BB8D'>##t_emailupdate##</td><td>##emailupdate##</td><td  width='auto' bgcolor='#A2BB8D'>##t_category##</td><td>##category##</td></tr>
			<tr><td  width='auto' bgcolor='#A2BB8D'>##t_filesname##</td><td colspan='3' width='auto'>##filesname##</td></tr>
			<tr><td  colspan='4' width='auto' bgcolor='#A2BB8D'>##t_content##</td></tr>
                       <tr><td colspan='2' width='auto' bgcolor='#A2BB8D'>##t_title_ticket## </td><td colspan='2' width='auto'>##title_ticket##</td></tr>
			<tr><td colspan='4' width='auto'>##content##</td></tr></table><br>
			<table width='590px' border=1>
			<tr><td colspan='2' width='auto'>##followup##</td></tr></table><br></div><br>
		</div>
		<div id='signature'>##signature##</div>
	</div>
	</body>
</html>
0.68
<html>
        <head>
                <style type="text/css">
                        body{margin:0px;}
                        #description{
                                color: inherit;
                                background: #ebebeb;
                                border-style: solid;
                                border-color:#8d8d8d;
                                border-width : 0px 1px 0px 0px;
                                font-weight:bold;
                        }
 
                        #back{
                                background-color:#898989;
                        }
                        #sidebar{
                                float:left;
                                width:250px;
                        }
 
                        #page{
                                background-color :#FFF;
                                margin-left:251px;
                                width:590px;
                        }
                        #top{
                                height:80px;
                                width:590px;
                        }
                        #followup{
                                font-size:8px;
                        }
                        #signature{
                                text-align:right;
                        }
                </style>
        </head>
        <body>
                <div id='back'>
                        <div id='sidebar'>
                                <h1>La Side Barre</h1>
                        </div>
                        <div id='page'>
                                <div id='top'>
                                        Suivi d'intervention GLPI
                                </div>
                                <div id='description'>##title##</div>
 
                                Auteur : ##author## <br />
                                Date début : ##date##<br />
                                Source de la demande : ##request## <br />
                                Matériel concerné : ##equipment##<br />
                                Statut : ##status## <br />
                                Attribué : ##assign##<br />
                                Priorité : ##priority##<br />
                                Contact : ##contact## <br />
                                Suivi par email : ##emailupdate## <br />
                                Catégorie : ##category##<br />
                                Contenu :
                                <div id='contents'>##content##</div>
 
                                <div id='followup'>##followup##</div>
                        </div>
                        <div id='signature'>##signature##</div>
                </div>
        </body>
</html>

Les Modifications du code 0.70.1 - 0.70.2 - 0.71.0 - 0.71.1 - 0.71.2 - 0.71.5 - 0.72 - 0.72.1 - 0.72.3

Ensuite pour pouvoir utiliser le template il faut modifier quelques parties de code, la première modification s'effectue dans le fichier tracking.class.php dans le répertoire inc

Rendez vous à la ligne 609 et remplacez le code suivant :

(ligne 765 pour GLPI 0.71.1) (ligne 770 pour GLPI 0.71.2 et 0.71.5) (ligne 829 pour GLPI 0.72 et 0.72.1) (ligne 837 pour GLPI 0.72.3)

function textfollowups
 
               if($format=="html"){
				$message = "<div class='description'><strong>".$LANG["mailing"][4]." : $nbfollow<br></strong></div><br>";
 
				if ($nbfollow>0){
					$fup=new Followup();
					while ($data=$DB->fetch_array($result)){
						$fup->getfromDB($data['ID']);
						$message .= "<strong>[ ".convDateTime($fup->fields["date"])." ] ".($fup->fields["private"]?"<i>".$LANG["job"][30]."</i>":"")."</strong><br>";
						$message .= "<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$LANG["job"][4].":</span> ".$fup->getAuthorName()."<br>";
						$message .= "<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$LANG["mailing"][3]."</span>:<br>".nl2br($fup->fields["contents"])."<br>";
						if ($fup->fields["realtime"]>0)
							$message .= "<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$LANG["mailing"][104].":</span> ".getRealtime($fup->fields["realtime"])."<br>";
 
						$message.="<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$LANG["mailing"][25]."</span> ";
						$query2="SELECT * from glpi_tracking_planning WHERE id_followup='".$data['ID']."'";
						$result2=$DB->query($query2);
						if ($DB->numrows($result2)==0)
							$message.=$LANG["job"][32]."<br>";
						else {
							$data2=$DB->fetch_array($result2);
							$message.=convDateTime($data2["begin"])." -> ".convDateTime($data2["end"])."<br>";
						}
 
						$message.=$LANG["mailing"][0]."<br>";	
					}	
				}
			}else{ // text format

Par le code suivant :

                if($format=="html"){
				$message = "<div class='description'><strong>".$LANG["mailing"][4]." : $nbfollow<br></strong></div><br>";
 
				if ($nbfollow>0){
					$fup=new Followup();
			//modif tsmr
					while ($data=$DB->fetch_array($result)){
						$fup->getfromDB($data['ID']);
						$message .= "<tr><td colspan='2' bgcolor='#A2BB8D'>[ ".convDateTime($fup->fields["date"])." ] ".($fup->fields["private"]?"<i>".$LANG["common"][77]."</i>":"")."</td></tr>";
						$message .= "<tr><td width='95' bgcolor='#A2BB8D'>".$LANG["common"][37]." :</td><td> ".$fup->getAuthorName()."</td></tr>";
						$message .= "<tr><td width='95' bgcolor='#A2BB8D'>".$LANG["mailing"][3]." :</td><td>".nl2br($fup->fields["contents"])."</td></tr>";
						if ($fup->fields["realtime"]>0)
							$message .= "<tr><td width='95' bgcolor='#A2BB8D'>".$LANG["mailing"][104]." :</td><td> ".getRealtime($fup->fields["realtime"])."</td></tr>";
 
						$message.="<tr><td width='95' bgcolor='#A2BB8D'>".$LANG["mailing"][25]."</td>";
						$query2="SELECT * from glpi_tracking_planning WHERE id_followup='".$data['ID']."'";
						$result2=$DB->query($query2);
						if ($DB->numrows($result2)==0)
							$message.="<td>".$LANG["job"][32]."</td></tr>";
						else {
							$data2=$DB->fetch_array($result2);
							$message.="<td>".convDateTime($data2["begin"])." -> ".convDateTime($data2["end"])."</td></tr>";
						}
 
						//$message.=$lang["mailing"][0];	
					}
				//fin modif tsmr	
				}
			}else{ // text format

Puis rendez-vous à la ligne 666 et remplacez le code suivant :

(ligne 833 pour GLPI 0.71.1) (ligne 836 pour GLPI 0.71.2) (ligne 834 pour GLPI 0.71.5) (ligne 903 pour GLPI 0.72 ; 0.72.1 et 0.72.3)

	function textDescription($format="text"){
		global $DB,$LANG;
 
 
		$name=$LANG["help"][30];
		$contact='';
		$tech='';

Par le code suivant :

	function textDescription($format="text"){
		global $DB,$LANG,$CFG_GLPI;
 
 
		$name=$LANG["help"][30];
		$contact='';
		$tech='';
		$link='';

Puis rendez vous à la ligne 698 et remplacez le code suivant :

(ligne 881 pour GLPI 0.71.1) (ligne 885 pour GLPI 0.71.2) (ligne 882 pour GLPI 0.71.5) (ligne 952 pour GLPI 0.72 ; 0.72.1 et 0.72.3)

function textDescription
 
if($format=="html"){
			$message= "<html><head> <style type="text/css">";
			$message.=".description{ color: inherit; background: #ebebeb; border-style: solid; border-color: #8d8d8d; border-width: 0px 1px 1px 0px; }";
			$message.=" </style></head><body>";
 
			$message.="<div class='description'><strong>".$LANG["mailing"][5]."</strong></div><br>";
 
			$author=$this->getAuthorName();
			if (empty($author)) $author=$LANG["mailing"][108];
			$message.="<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$LANG["job"][4].":</span> ".$author."<br>";
			$message.="<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>". $LANG["search"][8].":</span> ".convDateTime($this->fields["date"])."<br>";
			$message.="<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>". $LANG["job"][44].":</span> ".getRequestTypeName($this->fields["request_type"])."<br>";
			$message.="<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>". $LANG["mailing"][7].":</span> ".$name."<br>";
			if (!empty($tech))
				$message.="<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>". $LANG["common"][10].":</span> ".$tech."<br>";
			$message.= "<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$LANG["joblist"][0].":</span> ".getStatusName($this->fields["status"])."<br>";
			$assign=getAssignName($this->fields["assign"],USER_TYPE);
			$assign_group="";
			if (isset($this->fields["assign_group"])){
				$assign_group=getAssignName($this->fields["assign_group"],GROUP_TYPE);
			}
			if ($assign=="[Nobody]"){
				if (!empty($assign_group)){
					$assign=$assign_group;
				} else {
					$assign=$LANG["mailing"][105];
				}
			} else {
				if (!empty($assign_group)){
					$assign.=" / ".$assign_group;
				}
			}
			$message.= "<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$LANG["mailing"][8].":</span> ".$assign."<br>";
			$message.="<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$LANG["joblist"][2].":</span> ".getPriorityName($this->fields["priority"])."<br>";
			if ($this->fields["device_type"]!=SOFTWARE_TYPE&&!empty($contact))
				$message.= "<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$LANG["mailing"][28].":</span> ".$contact."<br>";
			if ($this->fields["emailupdates"]){
				$message.="<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$LANG["mailing"][103].":</span> ".$LANG["choice"][1]."<br>";
			} else {
				$message.="<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$LANG["mailing"][103].":</span> ".$LANG["choice"][0]."<br>";
			}
 
			$message.= "<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$LANG["common"][36].":</span> ";
			if (isset($this->fields["category"])&&$this->fields["category"]){
				$message.= getDropdownName("glpi_dropdown_tracking_category",$this->fields["category"]);
			} else $message.=$LANG["mailing"][100];
			$message.= "<br>";
			$message.="<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$LANG["common"][57].":</span> ".$this->fields["name"]."<br>";
			$message.="<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>". $LANG["mailing"][3].":</span><br>".nl2br($this->fields["contents"])."<br><br>";	
 
		}else{ //text format

Par le code suivant :

if($format=="html"){
            //modif tsmr
            $filename = GLPI_ROOT."/files/mail.tpl";
 
             $handle = fopen ($filename, "r");
            $message = fread ($handle, filesize ($filename));
            fclose ($handle);
 			if ($CFG_GLPI["url_in_mail"]&&!empty($CFG_GLPI["url_base"])){
                $link ="<div align='center'><a href=".$CFG_GLPI["url_base"]."/index.php?redirect=tracking_".$this->fields["ID"].">".$CFG_GLPI["url_base"]."/index.php?redirect=tracking_".$this->fields["ID"]."</a></div>";
             }		
            $message = ereg_replace("##link##",$link,$message);
            $message = ereg_replace("##t_link##",$LANG['document'][33],$message);
 
            $message = ereg_replace("##title##",$LANG["mailing"][5],$message);
 
            $message = ereg_replace("##ticketFollowUp##",$LANG['title'][10],$message);
 
            $author=$this->getAuthorName();
            if (empty($author)) $author=$LANG["mailing"][108];
            $message = ereg_replace("##author##",$author,$message);
            $message = ereg_replace("##t_author##",$LANG['common'][37],$message);
 
            $message = ereg_replace('##date##',convDateTime($this->fields["date"]),$message);
            $message = ereg_replace('##t_date##',$LANG['joblist'][11],$message);
            $message = ereg_replace('##request##',getRequestTypeName($this->fields["request_type"]),$message);
            $message = ereg_replace('##t_request##',$LANG['job'][44],$message);
            $message = ereg_replace('##equipment##',$name,$message);
            $message = ereg_replace('##t_equipment##',$LANG['mailing'][7],$message);
 
            //if (!empty($tech))
            //$message.=ereg_replace('##tech##',$tech,$message);
            $message = ereg_replace('##status##',getStatusName($this->fields["status"]),$message);
            $message = ereg_replace('##t_status##',$LANG['joblist'][0],$message);
            $assign=getAssignName($this->fields["assign"],USER_TYPE);
            $assign_group="";
            if (isset($this->fields["assign_group"])){
                $assign_group=getAssignName($this->fields["assign_group"],GROUP_TYPE);
            }
            if ($assign=="[Nobody]"){
                if (!empty($assign_group)){
                    $assign=$assign_group;
                } else {
                    $assign=$LANG["mailing"][105];
                }
            } else {
                if (!empty($assign_group)){
                    $assign.=" / ".$assign_group;
                }
            }
            $message = ereg_replace('##assign##',$assign,$message);
            $message = ereg_replace('##t_assign##',$LANG['mailing'][8],$message);
            $message = ereg_replace('##priority##',getPriorityName($this->fields["priority"]),$message);
            $message = ereg_replace('##t_priority##',$LANG['joblist'][2],$message);
            $message = ereg_replace('##t_contact##',$LANG['common'][18],$message);
            if ($this->fields["device_type"]!=SOFTWARE_TYPE&&!empty($contact))
                    $message = ereg_replace('##contact##',$contact,$message);
            else
                    $message = ereg_replace('##contact##','',$message);
            if ($this->fields["emailupdates"]==1){
                    $message = ereg_replace('##emailupdate##',$LANG["choice"][1],$message);
            }else{
                    $message = ereg_replace('##emailupdate##',$LANG["choice"][0],$message);
            }
            $message = ereg_replace('##t_emailupdate##',$LANG['mailing'][103],$message);
 
            if (isset($this->fields["category"])&&$this->fields["category"]){
                    $message = ereg_replace('##category##',getDropdownName("glpi_dropdown_tracking_category",$this->fields["category"]),$message);
            }else{
                    $message = ereg_replace('##category##',$LANG["mailing"][100],$message);
            }
            $message = ereg_replace('##t_category##',$LANG['common'][36],$message);
                        $message = ereg_replace('##title_ticket##',$this->fields["name"],$message);
                        $message = ereg_replace('##t_title_ticket##',$LANG['common'][57],$message);
            $message = ereg_replace('##content##',nl2br($this->fields["contents"]),$message);
            $message = ereg_replace('##t_content##',$LANG['mailing'][3],$message);
            //fin modif tsmr
            if (strlen($this->getNameOfFiles())==0)
            	$message = ereg_replace("##filesname##",$LANG['common'][49],$message);
            else
            	$message = ereg_replace("##filesname##",$this->getNameOfFiles(),$message);
 
            $message = ereg_replace("##t_filesname##",$LANG['document'][21],$message);            
 			//fin modif sbonn
        }else{ //text format 

De plus, il faut rajouter une fonction (peu importe son emplacement, je l'ai mise au dessus de la fonction textDescription)

 	/**
	 * Get names of linked files
	 * @author sbonn
	 * 
	 */
	function getNameOfFiles() {
		// File associated ?
		global $DB,$LANG;
 
		$query2 = "SELECT * 
			FROM glpi_doc_device 
			WHERE glpi_doc_device.FK_device = '".$this->fields["ID"]."' AND glpi_doc_device.device_type = '".TRACKING_TYPE."' ";
		$result2 = $DB->query($query2);
		$numfiles=$DB->numrows($result2);
 
		if ($numfiles>0){
			$message="";			
			$doc=new Document;
			while ($data=$DB->fetch_array($result2)){
				$doc->getFromDB($data["FK_doc"]);
 
				$splitter=explode("/",$doc->fields["filename"]);
				if (count($splitter)==2)
					$fileout=$splitter[1];
				else $fileout=$doc->fields["filename"];
				$message.=$fileout.", ";
 
			}
			return substr($message,0,-2);
		}else return "";
	}
 

Voila pour le plus gros du travail, mais ce n'est pas fini, il faut modifier le fichier mailing.class.php toujours situé dans le repertoire inc.

Rendez vous à la ligne 347 et remplacer le code suivant :

(ligne 427 pour GLPI 0.71.1, 0.71.2 et 0.71.5) (ligne 422 pour GLPI 0.72.1) (ligne 433 pour GLPI 0.72.3)

		if($format=="html"){
			if ($CFG_GLPI["url_in_mail"]&&!empty($CFG_GLPI["url_base"])){
				$body.="URL :<a href="".$CFG_GLPI["url_base"]."/index.php?redirect=tracking_".$this->job->fields["ID"]."">".$CFG_GLPI["url_base"]."/index.php?redirect=tracking_".$this->job->fields["ID"]." </a><br><br>";
 
			}
 
			$body.=$this->job->textDescription($format);
			$body.=$this->job->textFollowups($format, $sendprivate);
 
			$body.="<br>-- <br>".$CFG_GLPI["mailing_signature"];
			$body.="</body></html>";
			$body=ereg_replace("n","<br>",$body);
 
		}else{ // text format

Par le code suivant :

		if($format=="html"){
			/*if ($CFG_GLPI["url_in_mail"]&&!empty($CFG_GLPI["url_base"])){
				$body.="URL :<a href="".$CFG_GLPI["url_base"]."/index.php?redirect=tracking_".$this->job->fields["ID"]."">".$CFG_GLPI["url_base"]."/index.php?redirect=tracking_".$this->job->fields["ID"]." </a><br><br>";
 
			}
*/
 
			$body.=$this->job->textDescription($format);
			$body = ereg_replace('##followup##',$this->job->textFollowups("html",$sendprivate),$body);
                        $body = ereg_replace('##signature##',$CFG_GLPI["mailing_signature"],$body);
			/*
			$body.=$this->job->textFollowups($format, $sendprivate);
 
			$body.="<br>-- <br>".$CFG_GLPI["mailing_signature"];
			$body.="</body></html>";
			$body=ereg_replace("n","<br>",$body);
*/
		}else{ // text format

Les Modifications du code 0.68

Ensuite pour pouvoir utiliser le template il faut modifier quelques parties de code, la première modification s'effectue dans le fichier tracking.class.php dans le répertoire inc

Rendez vous à la ligne 559 et remplacez le code suivant :

                if($format=="html"){
                        $message= "<html><head> <style type="text/css">";
                        $message.=".description{ color: inherit; background: #ebebeb; border-style: solid; border-color: #8d8d8d; border-width: 0px 1px 1px 0px; }";
                        $message.=" </style></head><body>";
 
                        $message.="<div class='description'><strong>".$lang["mailing"][5]."</strong></div><br>";
                        $author=$this->getAuthorName();
                        if (empty($author)) $author=$lang["mailing"][108];
                        $message.="<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$lang["common"][37].":</span> ".$author."<br>";
                        $message.="<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>". $lang["search"][8].":</span> ".convDateTime($this->fields["date"])."<br>";
                        $message.="<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>". $lang["job"][44].":</span> ".getRequestTypeName($this->fields["request_type"])."<br>";
                        $message.="<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>". $lang["mailing"][7]."</span> ".$name."<br>";
                        $message.= "<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$lang["joblist"][0].":</span> ".getStatusName($this->fields["status"])."<br>";
                        $assign=getAssignName($this->fields["assign"],USER_TYPE);
                        if ($assign=="[Nobody]")
                                $assign=$lang["mailing"][105];
                        $message.= "<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$lang["mailing"][8]."</span> ".$assign."<br>";
                        $message.="<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$lang["joblist"][2].":</span> ".getPriorityName($this->fields["priority"])."<br>";
                        if ($this->fields["device_type"]!=SOFTWARE_TYPE)
                                $message.= "<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$lang["mailing"][28]."</span> ".$contact."<br>";
                        if ($this->fields["emailupdates"]=="yes"){
                                $message.="<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$lang["mailing"][103]."</span> ".$lang["choice"][1]."<br>";
                        } else {
                                $message.="<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$lang["mailing"][103]."</span> ".$lang["choice"][0]."<br>";
                        }
 
                        $message.= "<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>".$lang["common"][36].":</span> ";
                        if (isset($this->fields["category"])&&$this->fields["category"]){
                                $message.= getDropdownName("glpi_dropdown_tracking_category",$this->fields["category"]);
                        } else $message.=$lang["mailing"][100];
                        $message.= "<br>";
 
                        $message.="<span style='color:#8B8C8F; font-weight:bold;  text-decoration:underline; '>". $lang["mailing"][3]."</span><br>".nl2br($this->fields["contents"])."<br><br>";
 
                }else{ //text format

Par le code suivant :

                if($format=="html"){
                        $filename = "../files/mail.tpl";
                        $handle = fopen ($filename, "r");
                        $message = fread ($handle, filesize ($filename));
                        fclose ($handle);
 
                        $message = ereg_replace("##title##",$lang["mailing"][5],$message);
 
                        $author=$this->getAuthorName();
                        if (empty($author)) $author=$lang["mailing"][108];
                        $message = ereg_replace("##author##",$author,$message);
 
                        $message = ereg_replace('##date##',convDateTime($this->fields["date"]),$message);
                        $message = ereg_replace('##request##',getRequestTypeName($this->fields["request_type"]),$message);
                        $message = ereg_replace('##equipment##',$name,$message);
                        $message = ereg_replace('##status##',getStatusName($this->fields["status"]),$message);
                        $assign=getAssignName($this->fields["assign"],USER_TYPE);
                        if($assign=="[Nobody]")
                                $assign=$lang["mailing"][105];
                        $message = ereg_replace('##assign##',$assign,$message);
                        $message = ereg_replace('##priority##',getPriorityName($this->fields["priority"]),$message);
                        if ($this->fields["device_type"]!=SOFTWARE_TYPE)
                                $message = ereg_replace('##contact##',$contact,$message);
 
                        if ($this->fields["emailupdates"]=="yes"){
                                $message = ereg_replace('##emailupdate##',$lang["choice"][1],$message);
                        }else{
                                $message = ereg_replace('##emailuptade##',$lang["choice"][0],$message);
                        }
 
                        if (isset($this->fields["category"])&&$this->fields["category"]){
                                $message = ereg_replace('##category##',getDropdownName("glpi_dropdown_tracking_category",$this->fields["category"]),$message);
                        }else{
                                $message = ereg_replace('##category##',$lang["mailing"][100],$message);
                        }
 
                        $message = ereg_replace('##content##',nl2br($this->fields["contents"]),$message);
 
                }else{ //text format

Voila pour le plus gros du travail, mais ce n'est pas fini, il faut modifier le fichier mailing.class.php toujours situé dans le repertoire inc. Rendez vous à la ligne 269 et remplacez le code suivant :

                        $body.=$this->job->textFollowups("html");
                        $body.="<br>-- <br>".$cfg_glpi["mailing_signature"];
 
                        $body.="</body></html>";
                        $body=ereg_replace("n","<br>",$body);

Par le code suivant :

                        $body = ereg_replace('##followup##',$this->job->textFollowups("html"),$body);
                        $body = ereg_replace('##signature##',$cfg_glpi["mailing_signature"],$body);

Conclusion

Vous voila donc avec une gestion de l'apparence des mails envoyés au format HTML plus simple que de modifier à chaque fois le code même de GLPI, là il vous suffit juste de modifier le template mail.tpl en faisant la mise en page comme vous le voulez.

Voici la liste des tags qui vous seront utiles pour afficher les informations désirées dans le template :

##title## : Titre
##author## : Auteur de l'intervention
##date## : date de la demande
##request## : Source de la demande
##equipment## : Materiel sur lequel porte l'intervention
##status## : Le status
##priority## : La priorité de la demande
##contact## : Nom du demandeur
##emailupdate## : Suivis par mail (OUI/NON)
##category## : Categorie d'intervention
##content## : Contenu de la demande
##followup## : Historique des suivis
##signature## : Signature du mail

Tags supplémentaires pour la version 0.70.1

##title_ticket## : Titre du Ticket
##assign## : nom du technicien et du groupe
##link## : Lien du ticket
##filesname## : liste des fichiers liés au ticket
##ticketFollowUp## : texte du début du mail

##t_title_ticket## : libellé multilingue de ##title_ticket## 
##t_assign## : libellé multilingue de ##assign## 
##t_link## : libellé multilingue de ##link##
##t_author## : libellé multilingue de ##author##
##t_date## : libellé multilingue de ##date##
##t_request## : libellé multilingue de ##request##
##t_equipment## : libellé multilingue de ##equipment##
##t_status## : libellé multilingue de ##status##
##t_priority## : libellé multilingue de ##priority##
##t_contact## : libellé multilingue de ##contact##
##t_emailupdate## : libellé multilingue de ##emailupdate##
##t_category## : libellé multilingue de ##category##
##t_content## : libellé multilingue de ##content##
##t_filesname## : libellé multilingue de ##filesname##

Mise à jour à venir.

Annexe 1: Uniformiser les couleurs des entêtes de cellule

Voici quelques modifications permettant de changer plus facilement et de manière uniforme la couleur des entêtes de cellule. Les modifications, basées sur la version 0.72 sont aisément transposables aux autres versions.

1. Modifier le fichier mail.tpl Ajouter sous la ligne:

td {font-family: Verdana;font-size: 11px;text-align: left;}

un nouveau style, qu'on affectera à l'ensemble des cellules concernées

           td.descHdr {
                font-family: Verdana;
                font-size: 11px;
                text-align: left;
                background-color: #A2BB8D;
           }

Dans la suite de ce même fichier, remplacer tous les

   bgcolor='#A2BB8D'

par

  class='descHdr'

2. Modifier le fichier tracking.class.php, dans la fonction function textfollowups, remplacer tous les

   bgcolor='#A2BB8D'

par

  class='descHdr'

3. Adapter la couleur du style du fichier mail.tmpl à la charte graphique de votre entité, en replaçant la valeur #A2BB8D par celle que vous souhaitez.