Subversion Repositories eFlore/Applications.del

Rev

Rev 1716 | Rev 1718 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1710 jpm 1
<?php
2
class Messagerie {
3
 
4
	private $conteneur = null;
5
 
6
	public function __construct($conteneur) {
7
		$this->conteneur = $conteneur;
8
	}
9
 
10
	public function envoyerHtml($destinataires, $sujet, $message) {
11
		$messageHtml = $message;
12
		$messageTxt = $this->supprimerHtml($message);
13
		$emailExpediteur = $this->conteneur->getParametre('adresse_expediteur_recapitulatif');
14
		$encodage = $this->conteneur->getParametre('encodage_appli');
15
		$dateHeure = date('D, j M Y G:i:s O');
16
		$uid = md5(uniqid(rand()));
17
		$limite = "_----------=_parties_$uid";
18
 
19
		// Définition d'un mail en texte simple et html
20
		// multipart/alternative signifie même contenu de la forme la plus simple à la plus complexe
21
		$entetes = "X-Sender: <http://www.tela-botanica.org>\n".
22
			"X-Mailer: PHP-DEL-SCRIPTS\n".
23
			"X-auth-smtp-user: $emailExpediteur\n".
24
			"X-abuse-contact: $emailExpediteur\n".
25
			"Date: $dateHeure\n".
26
			"From: $emailExpediteur\n".
27
			"Content-Type: multipart/alternative; boundary=\"$limite\";\n\n";
28
 
29
		// le message en html est préféré s'il est lisible
30
		$contenu =
31
			"--$limite\n".
32
			"Content-Type: text/plain; charset=\"$encodage\";\n".
33
			"Content-Transfer-Encoding: 7bit;\n\n".
34
			"$messageTxt\n".
35
			"--$limite\n".
36
			"Content-Type: text/html;".
37
			"charset=\"$encodage\";\n".
38
			"Content-Transfer-Encoding: 7bit;\n\n".
39
			"$messageHtml\n".
40
			"--".$limite."--\n";
41
 
42
		$envoieStatut = $this->envoyer($destinataires, $entetes, $sujet, $contenu);
43
 
44
		return $envoieStatut;
45
	}
46
 
1716 jpm 47
	public function envoyerTxt($destinataires, $sujet, $message) {
48
		$messageTxt = $this->supprimerHtml($message);
49
		$emailExpediteur = $this->conteneur->getParametre('adresse_expediteur_recapitulatif');
50
		$dateHeure = date('D, j M Y G:i:s O');
51
 
52
		// Définition d'un mail en texte simple et html
53
		// multipart/alternative signifie même contenu de la forme la plus simple à la plus complexe
54
		$entetes = "X-Sender: <http://www.tela-botanica.org>\n".
55
			"X-Mailer: PHP-DEL-SCRIPTS\n".
56
			"X-auth-smtp-user: $emailExpediteur\n".
57
			"X-abuse-contact: $emailExpediteur\n".
58
			"Date: $dateHeure\n".
59
			"From: $emailExpediteur\n\n";
60
 
61
		// le message en html est préféré s'il est lisible
62
		$contenu = "$messageTxt\n";
63
 
64
		$envoieStatut = $this->envoyer($destinataires, $entetes, $sujet, $contenu);
65
 
66
		return $envoieStatut;
67
	}
68
 
1710 jpm 69
	private function envoyer($destinataires, $entetes, $sujet, $contenu) {
70
		$envoieStatut = mail(
71
			$destinataires,
72
			$sujet,
73
			$contenu,
74
			$entetes
75
		);
76
		return $envoieStatut;
77
	}
78
 
79
	/** Transforme automatiquement le message html en message txt.
80
	 *
81
	 * Réalise un stip_tags et avant ça un remplacement des liens sur mesure pour les mettre au format email txt.
82
	 */
83
	private function supprimerHtml($messageHtml) {
84
		$html = $this->ajouterHrefDansBalise($messageHtml);
85
		$messageSansHtml = strip_tags($html);
1717 jpm 86
		$messageTxt = trim($messageSansHtml, " \t");
1710 jpm 87
		return $messageTxt;
88
	}
89
 
90
	/**
91
	 * Extrait la valeur de l'attribut href des balises HTML de liens (a) et ajoute le lien entre
92
	 * chevrons (<>) dans le contenu de la balise "a".
93
	 */
94
	private function ajouterHrefDansBalise($html) {
1717 jpm 95
		libxml_use_internal_errors(true);
96
		$dom = new DOMDocument();
1710 jpm 97
		$dom->loadHTML($html);
98
		foreach ($dom->getElementsByTagName('a') as $node) {
99
			if ($node->hasAttribute( 'href' )) {
100
				$href = $node->getAttribute('href');
101
				$node->nodeValue = $node->nodeValue." ( $href )";
102
			}
103
		}
104
		$html = $dom->saveHtml();
105
		return $html;
106
	}
107
}