Subversion Repositories Applications.annuaire

Rev

Rev 273 | Rev 294 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 273 Rev 274
Line 216... Line 216...
216
		
216
		
Line 217... Line 217...
217
		$limite = "_----------=_parties_".md5(uniqid (rand()));
217
		$limite = "_----------=_parties_".md5(uniqid (rand()));
Line 218... Line 218...
218
 
218
 
-
 
219
		foreach($destinataires as $destinataire) {
219
		foreach($destinataires as $destinataire) {
220
			
-
 
221
			// Définition d'un mail en texte simple et html				
-
 
222
			$entetes .= "X-Sender: <http://www.tela-botanica.org>\n";
-
 
223
			$entetes .= "X-Mailer: PHP\n";
220
			
224
			$entetes .= "X-auth-smtp-user: annuaire@tela-botanica.org \n";
-
 
225
			$entetes .= "X-abuse-contact: annuaire@tela-botanica.org \n";
221
			// Définition d'un mail en text simple et html				
226
			$entetes .= "Date: ".date("D, j M Y G:i:s O")."\n";
Line 222... Line 227...
222
			$entetes .= 'From: '.$expediteur."\r\n";
227
			$entetes .= 'From: '.$expediteur."\n";
Line 223... Line 228...
223
			$entetes .= 'MIME-Version: 1.0' . "\r\n";
228
			// multipart/alternative signifie même contenu de la forme la plus simple à la plus complexe
224
			$entetes .= "Content-Type: multipart/alternative; boundary=\"".$limite."\";\r\n";
229
			$entetes .= "Content-Type: multipart/alternative; boundary=\"".$limite."\";\n\n";
225
			
230
			
226
			$contenu = "";
231
			$contenu = "";
227
			
-
 
228
			$contenu .= "\r\n--".$limite."\r\n";
232
			
Line -... Line 233...
-
 
233
			// message en texte plein
229
			$contenu .= "Content-Type: text/plain;";
234
			$contenu .= "--".$limite."\n";
230
			$contenu .= "charset=\"".Config::get('appli_encodage')."\";\r\n";
235
			$contenu .= "Content-Type: text/plain; charset=\"".Config::get('appli_encodage')."\";\n";
231
			$contenu .= "Content-Transfer-Encoding: quoted-printable;\r\n";
236
			$contenu .= "Content-Transfer-Encoding: 7bit;\n\n";
232
			$contenu .= "\r\n";
237
			$contenu .= $message_texte."\n";
233
			$contenu .= $message_texte;
238
			
-
 
239
			// le message en html est préféré s'il est lisible
234
			
240
			$contenu .= "--".$limite."\n";
Line 235... Line 241...
235
			$contenu .= "\r\n--".$limite."\r\n";
241
			$contenu .= "Content-Type: text/html;";
Line 236... Line 242...
236
			$contenu .= "Content-Type: text/html;";
242
			$contenu .= "charset=\"".Config::get('appli_encodage')."\";\n";
237
			$contenu .= "charset=\"".Config::get('appli_encodage')."\";\r\n";
243
			$contenu .= "Content-Transfer-Encoding: 7bit;\n\n";
238
			$contenu .= "Content-Transfer-Encoding: quoted-printable;\r\n";
244
			$contenu .= $message_antislashe."\n";
239
			$contenu .= "\r\n";
245
			
Line 240... Line 246...
240
			$contenu .= $message_antislashe;
246
			$contenu .= "--".$limite."--\n";
241
						
247
						
-
 
248
			$sujet = $this->encoderChainePourEnvoiMail($sujet);
-
 
249
			
-
 
250
			if(!mail($destinataire, mb_encode_mimeheader($sujet), $contenu, $entetes)) {
-
 
251
				return false;
-
 
252
			}			
-
 
253
		}
-
 
254
		
-
 
255
		return true;
-
 
256
	}
-
 
257
	
-
 
258
	public function envoyerMailAvecPieceJointe($expediteur, $destinataires, $sujet, $message, $piece_jointe = null, $nom_fichier, $type_mime = 'text/plain') {
-
 
259
 
-
 
260
		if(!is_array($destinataires)) {
-
 
261
			$destinataires = array($destinataires);
-
 
262
		}
-
 
263
		
-
 
264
		$message_antislashe = $this->encoderChainePourEnvoiMail($message);
-
 
265
		
-
 
266
		$message_texte = $this->filtrerChaine($message);
-
 
267
		
-
 
268
		$message_html = $message_antislashe;
-
 
269
		
-
 
270
		$limite = "_----------=_parties_".md5(uniqid (rand()));
-
 
271
		
-
 
272
		$limite_partie_message = "_----------=_parties_".md5(uniqid (rand() + 1));
-
 
273
 
-
 
274
		foreach($destinataires as $destinataire) {
-
 
275
			
-
 
276
			// Définition d'un mail avec différents type de contenu
-
 
277
			$entetes .= "X-Sender: <http://www.tela-botanica.org>\n";
-
 
278
			$entetes .= "X-Mailer: PHP\n";
-
 
279
			$entetes .= "X-auth-smtp-user: annuaire@tela-botanica.org \n";
-
 
280
			$entetes .= "X-abuse-contact: annuaire@tela-botanica.org \n";
-
 
281
			$entetes .= "Date: ".date("D, j M Y G:i:s O")."\n";
-
 
282
			$entetes .= 'From: '.$expediteur."\n";
-
 
283
			$entetes .= 'MIME-Version: 1.0' . "\n";
-
 
284
			
-
 
285
			// Définition d'un type de contenu mixed (mail (texte + html) + piece jointe)
-
 
286
			$entetes .= "Content-Type: multipart/mixed; boundary=\"".$limite."\";\n\n";
-
 
287
			
-
 
288
			$contenu = "";
-
 
289
			
-
 
290
			// Première sous partie : contenu du mail
-
 
291
			$contenu .= "\n--".$limite."\n";
-
 
292
			
-
 
293
				// Définition d'un type de contenu alternatif pour l'envoi en html et texte
-
 
294
				$contenu .= "Content-Type: multipart/alternative; boundary=\"".$limite_partie_message."\";\n";
-
 
295
				
-
 
296
				// Version texte
-
 
297
				$contenu .= "\n--".$limite_partie_message."\n";
-
 
298
				$contenu .= "Content-Type: text/plain;";
-
 
299
				$contenu .= "charset=\"".Config::get('appli_encodage')."\";\n";
-
 
300
				$contenu .= "Content-Transfer-Encoding: 7bit;\n";
-
 
301
				$contenu .= "\n";
-
 
302
				$contenu .= $message_texte."\n";
-
 
303
				
-
 
304
				// Version html
-
 
305
				$contenu .= "--".$limite_partie_message."\n";
-
 
306
				$contenu .= "Content-Type: text/html;";
-
 
307
				$contenu .= "charset=\"".Config::get('appli_encodage')."\";\n";
-
 
308
				$contenu .= "Content-Transfer-Encoding: 7bit;\n";
-
 
309
				$contenu .= "\n";
-
 
310
				$contenu .= nl2br($message_antislashe)."\n";
-
 
311
				
-
 
312
				$contenu .= "\n--".$limite_partie_message."--\n";
-
 
313
				
-
 
314
			$contenu .= "--".$limite."\n";
-
 
315
			
-
 
316
			// Seconde sous partie : pièce jointe
-
 
317
			if($piece_jointe != null) {
-
 
318
				
-
 
319
				$attachment = chunk_split(base64_encode($piece_jointe));
-
 
320
				
-
 
321
				$contenu .= "Content-Type: ".$type_mime."; name=\"".$nom_fichier."\"\n";
-
 
322
				$contenu .= "Content-Transfer-Encoding: base64\n";
-
 
323
				$contenu .= "Content-Disposition: attachment; filename=\"".$nom_fichier."\"\n";
-
 
324
				$contenu .= "X-Attachment-Id: ".md5($attachment)."\n\n";
-
 
325
				
-
 
326
				$contenu .= $attachment;
-
 
327
				$contenu .= "\n--".$limite."--\n";
-
 
328
				
Line 242... Line 329...
242
			$sujet = $this->encoderChainePourEnvoiMail($sujet);
329
			}
243
			
330
			
244
			if(!mail($destinataire, mb_encode_mimeheader($sujet), $contenu, $entetes)) {
331
			if(!mail('hommecanard@hotmail.com', mb_encode_mimeheader($sujet), $contenu, $entetes)) {
245
				return false;
332
				return false;
Line 440... Line 527...
440
 
527
 
Line 441... Line 528...
441
		return $this->envoyerMail($this->adresse_mail_annuaire, $this->mail_moderateur, 'Un message est en attente de modération', $contenu_mail);
528
		return $this->envoyerMail($this->adresse_mail_annuaire, $this->mail_moderateur, 'Un message est en attente de modération', $contenu_mail);
Line 442... Line -...
442
 
-
 
443
	}
-
 
444
	
-
 
445
	private function envoyerMailAvecPieceJointe($chemin, $type_mime_fichier) {
-
 
446
		
-
 
447
		/* Pièce jointe, on va dire que notre fichier s'appelle bidule.doc et qu'il se situe dans le répertoire courant */
-
 
448
		$fichier=file_get_contents($chemin);
-
 
449
		/* On utilise aussi chunk_split() qui organisera comme il faut l'encodage fait en base 64 pour se conformer aux standards */
-
 
450
		$fichier=chunk_split( base64_encode($fichier) );
-
 
451
		
-
 
452
		//Écriture de la pièce jointe
-
 
453
		$body = $body . "--" .$boundary. "\n
-
 
454
		Content-Type: application/msword; name=\"nom_fichier\"\r\n
-
 
455
		Content-Transfer-Encoding: base64\r\n
-
 
456
		Content-Disposition: attachment; filename=\"nom_fichier\"\r\n\n
-
 
457
		$fichier";
-
 
458
		
-
 
459
		//Fermeture de la frontière
-
 
460
		$body = $body . "--" . $boundary ."--";
-
 
461
		
529
 
Line 462... Line 530...
462
	}
530
	}
463
	
531
	
Line 464... Line 532...
464
	private function filtrerChaine($message) {
532
	private function filtrerChaine($message) {
465
		
533
		
466
		return strip_tags($message);
534
		return strip_tags($message);
467
	}
535
	}
-
 
536
	
468
	
537
	private function encoderChainePourEnvoiMail($chaine) {