[ Index ]
 

Code source de SPIP 1.9.2c

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

/ecrire/inc/ -> envoyer_mail.php (source)

   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("&#8217;","&#8220;","&#8221;"),
  74              array("'",      '"',      '"'),
  75          $t);
  76      }
  77  
  78      $t = str_replace(
  79          array("&mdash;", "&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 &eacute; &#8217, &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  ?>


Généré le : Wed Nov 21 10:20:27 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics