[ Index ] |
|
Code source de SPIP 1.9.2c |
1 <?php 2 3 /***************************************************************************\ 4 * SPIP, Systeme de publication pour l'internet * 5 * * 6 * Copyright (c) 2001-2007 * 7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * 8 * * 9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * 10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * 11 \***************************************************************************/ 12 13 if (!defined("_ECRIRE_INC_VERSION")) return; 14 15 // 16 // Infos de mails sur l'hebergeur (tout ca est assez sale) 17 // 18 global $hebergeur; 19 global $HTTP_X_HOST, $SERVER_NAME; 20 $hebergeur = ''; 21 22 // Lycos (ex-Multimachin) 23 if ($HTTP_X_HOST == 'membres.lycos.fr') { 24 $hebergeur = 'lycos'; 25 } 26 // Altern 27 else if (ereg('altern\.com$', $SERVER_NAME)) { 28 $hebergeur = 'altern'; 29 } 30 // NexenServices 31 else if ($_SERVER['SERVER_ADMIN'] == 'www@nexenservices.com') { 32 if (!function_exists('email')) 33 include ('mail.inc'); 34 $hebergeur = 'nexenservices'; 35 } 36 // Online 37 else if (function_exists('email')) { 38 $hebergeur = 'online'; 39 } 40 41 42 // 43 // Chez lyconiania, envoyer un mail coupe la connection MySQL (sic) 44 // 45 46 $GLOBALS['queue_mails'] = ''; 47 48 // http://doc.spip.org/@envoyer_queue_mails 49 function envoyer_queue_mails() { 50 global $queue_mails; 51 if (!$queue_mails) return; 52 reset($queue_mails); 53 while (list(, $val) = each($queue_mails)) { 54 $email = $val['email']; 55 $sujet = $val['sujet']; 56 $texte = $val['texte']; 57 $headers = $val['headers']; 58 @mail($email, $sujet, $texte, $headers); 59 } 60 } 61 62 if ($GLOBALS['hebergeur'] == 'lycos') { 63 register_shutdown_function(envoyer_queue_mails); 64 } 65 66 // http://doc.spip.org/@nettoyer_caracteres_mail 67 function nettoyer_caracteres_mail($t) { 68 69 $t = filtrer_entites($t); 70 71 if ($GLOBALS['meta']['charset'] <> 'utf-8') { 72 $t = str_replace( 73 array("’","“","”"), 74 array("'", '"', '"'), 75 $t); 76 } 77 78 $t = str_replace( 79 array("—", "&endash;"), 80 array("--","-" ), 81 $t); 82 83 return $t; 84 } 85 86 // http://doc.spip.org/@inc_envoyer_mail_dist 87 function inc_envoyer_mail_dist($email, $sujet, $texte, $from = "", $headers = "") { 88 global $hebergeur, $queue_mails; 89 include_spip('inc/charsets'); 90 91 if (!email_valide($email)) return false; 92 if ($email == _T('info_mail_fournisseur')) return false; // tres fort 93 94 // Ajouter au besoin le \n final dans les $headers passes en argument 95 if ($headers = trim($headers)) $headers .= "\n"; 96 97 if (!$from) { 98 $email_envoi = $GLOBALS['meta']["email_envoi"]; 99 $from = email_valide($email_envoi) ? $email_envoi : $email; 100 } else { 101 // pour les sites qui colle d'office From: serveur-http 102 $headers .= "Reply-To: $from\n"; 103 } 104 spip_log("mail ($email): $sujet". ($from ?", from <$from>":'')); 105 106 $charset = $GLOBALS['meta']['charset']; 107 108 // Ajouter le Content-Type s'il n'y est pas deja 109 if (strpos($headers, "Content-Type: ") === false) 110 $headers .= 111 "MIME-Version: 1.0\n". 112 "Content-Type: text/plain; charset=$charset\n". 113 "Content-Transfer-Encoding: 8bit\n"; 114 115 // Et maintenant le champ From: 116 $headers .= "From: $from\n"; 117 118 // nettoyer les é ’, &emdash; etc... 119 $texte = nettoyer_caracteres_mail($texte); 120 $sujet = nettoyer_caracteres_mail($sujet); 121 122 // encoder le sujet si possible selon la RFC 123 if (init_mb_string()) { 124 # un bug de mb_string casse mb_encode_mimeheader si l'encoding interne 125 # est UTF-8 et le charset iso-8859-1 (constate php5-mac ; php4.3-debian) 126 mb_internal_encoding($charset); 127 $sujet = mb_encode_mimeheader($sujet, $charset, 'Q', "\n"); 128 mb_internal_encoding('utf-8'); 129 } 130 131 if (function_exists('wordwrap')) 132 $texte = wordwrap($texte); 133 134 if (os_serveur == 'windows') { 135 $texte = ereg_replace ("\r*\n","\r\n", $texte); 136 $headers = ereg_replace ("\r*\n","\r\n", $headers); 137 $sujet = ereg_replace ("\r*\n","\r\n", $sujet); 138 } 139 140 switch($hebergeur) { 141 case 'lycos': 142 $queue_mails[] = array( 143 'email' => $email, 144 'sujet' => $sujet, 145 'texte' => $texte, 146 'headers' => $headers); 147 return true; 148 case 'free': 149 return false; 150 case 'online': 151 return @email('webmaster', $email, $sujet, $texte); 152 default: 153 return @mail($email, $sujet, $texte, $headers); 154 } 155 } 156 157 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Wed Nov 21 10:20:27 2007 | par Balluche grâce à PHPXref 0.7 |
![]() |