Subversion Repositories eFlore/Applications.del

Rev

Rev 1716 | Go to most recent revision | Details | 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
 
47
	private function envoyer($destinataires, $entetes, $sujet, $contenu) {
48
		$envoieStatut = mail(
49
			$destinataires,
50
			$sujet,
51
			$contenu,
52
			$entetes
53
		);
54
		return $envoieStatut;
55
	}
56
 
57
	/** Transforme automatiquement le message html en message txt.
58
	 *
59
	 * Réalise un stip_tags et avant ça un remplacement des liens sur mesure pour les mettre au format email txt.
60
	 */
61
	private function supprimerHtml($messageHtml) {
62
		$html = $this->ajouterHrefDansBalise($messageHtml);
63
		$messageSansHtml = strip_tags($html);
64
		$messageTxt = trim(" \t", $messageSansHtml);
65
		return $messageTxt;
66
	}
67
 
68
	/**
69
	 * Extrait la valeur de l'attribut href des balises HTML de liens (a) et ajoute le lien entre
70
	 * chevrons (<>) dans le contenu de la balise "a".
71
	 */
72
	private function ajouterHrefDansBalise($html) {
73
		$dom = new DOMDocument;
74
		$dom->loadHTML($html);
75
		foreach ($dom->getElementsByTagName('a') as $node) {
76
			if ($node->hasAttribute( 'href' )) {
77
				$href = $node->getAttribute('href');
78
				$node->nodeValue = $node->nodeValue." ( $href )";
79
			}
80
		}
81
		$html = $dom->saveHtml();
82
		return $html;
83
	}
84
}