begin process at 2012 05 27 20:13:37
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

E-Mail / Messagerie

 > FILTRE POUR NEWSLETTERS GMAIL

FILTRE POUR NEWSLETTERS GMAIL


 Information sur la source

Note :
7,5 / 10 - par 2 personnes
7,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :E-Mail / Messagerie Classé sous :parsing, newsletter, newsletters, gmail, balise Niveau :Débutant Date de création :11/08/2008 Date de mise à jour :11/08/2008 15:38:15 Vu :4 685

Auteur : durealex

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note


 Description

Voici un nouveau code qui rend compatible une newsletters html à gmail. Et oui car comme tous le monde sait, ou pas :D le webmail gmail n'aime pas parmis plein de chose le css. Il veut que des balises styles, donc le code remplace les balises class par style et met tous les paramètres des cc dans la balise style.
J'espere j'explique pas trop mal.

La fonction main est filtrage qui prend en paramètre une chaine de caractère contenant la newsletters.

Source

  • <?
  • $coco = filtrage($string);
  • echo $coco;
  • function search_name_class($class)
  • {
  • $long = strlen($class);
  • $i = 0;
  • if ($class[$i] == "\"")
  • {
  • $i++;
  • while ($i < $long)
  • {
  • if ($class[$i] == "\"")
  • {
  • $i--;
  • break;
  • }
  • $i++;
  • }
  • return(substr($class, 1, $i));
  • }
  • return(NULL);
  • }
  • function isclass($newsletter, $i)
  • {
  • global $globu; $tmp=substr($newsletter,$i,6);
  • if ($tmp == "class=" || $tmp == "CLASS=")
  • {
  • $class = substr($newsletter, $i + 6);
  • return (search_name_class($class));
  • }
  • return (0);
  • }
  • function check_end_balise($tmp, $balise)
  • {
  • $i = 0;
  • $long = strlen($tmp);
  • if ($tmp[0] == '/')
  • $i++;
  • while ($i < $long && $tmp[$i] != '\t' && $tmp[$i] != ' ')
  • $i++;
  • if ($tmp[0] == '/')
  • $bal = substr($tmp, 1, $i);
  • else
  • $bal = substr($tmp, 0, $i);
  • $sav = $i;
  • while ($i < $long)
  • {
  • if (($class = isclass($tmp, $i)))
  • break;
  • $i++;
  • }
  • if ($tmp[0] == '/')
  • {
  • $i = 0;
  • while ($balise[$i])
  • {
  • $check_bal = substr($balise[$i], 0, strlen($bal));
  • if ($check_bal === $bal)
  • $balise[$i] = "None";
  • $i++;
  • }
  • }
  • else
  • $balise[] = $bal . ' ' . $class;
  • return ($balise);
  • }
  • function check_balise($newsletter, $i, $balise)
  • {
  • $i++;
  • $j = $i;
  • $long = strlen($newsletter);
  • while ($i < $long && $newsletter[$i] != '>')
  • $i++;
  • $tmp = substr($newsletter, $j, $i - $j);
  • $balise = check_end_balise($tmp, $balise);
  • return ($balise);
  • }
  • function filtrage($newsletter)
  • {
  • $letter = $newsletter;
  • $i = 0;
  • $long = strlen($newsletter);
  • while ($i < $long)
  • {
  • if (($class = isclass($newsletter, $i))) {
  • $letter = replace_css($newsletter, $i, $class, $letter);
  • }
  • $i++;
  • }
  • return ($letter);
  • }
  • function search_div($div, $class)
  • {
  • $long = strlen($div);
  • $i = 0;
  • while ($i < $long && $div[$i] != '{')
  • $i++;
  • $i++;
  • $j = 0;
  • while ($j < $long && $div[$j] != '}')
  • $j++;
  • $div = substr($div, $i, $j - $i);
  • return ($div);
  • }
  • function search_sub_div($div, $i, $class)
  • {
  • $long = strlen($div);
  • while ($i < $long && $div[$i] != '{')
  • $i++;
  • $i++;
  • $j = 0;
  • while ($j < $long && $div[$j] != '}')
  • $j++;
  • $div = substr($div, $i, $j - $i);
  • return ($div);
  • }
  • function is_div_class($newsletter, $i, $class)
  • {
  • if ($newsletter[$i] == ".")
  • {
  • $div = substr($newsletter, $i + 1);
  • $j = 0;
  • $long = strlen($div);
  • while ($j < $long)
  • {
  • if ($div[$j] == " " || $div[$j] == '\t' || $div[$j] == '{')
  • break;
  • $j++;
  • }
  • $i = $j;
  • while ($i < $long && $div[$i] != '{')
  • {
  • if ($div[$i] != " " && $div[$i] != '\t')
  • {
  • if ($class == substr($div, $i, $i - $j))
  • return (search_sub_div($div, $i, $class));
  • else
  • return (NULL);
  • }
  • $i++;
  • }
  • if ($class == substr($div, 0, $j))
  • return (search_div($div, $class));
  • return (NULL);
  • }
  • return (NULL);
  • }
  • function css_exist($newsletter, $class)
  • {
  • $long = strlen($newsletter);
  • $i = 0;
  • while ($i < $long)
  • {
  • if (($div = is_div_class($newsletter, $i, $class)))
  • {
  • return ($div);
  • }
  • $i++;
  • }
  • return (NULL);
  • }
  • function replace_css($newsletter, $i, $class, $letter)
  • {
  • if (($div = css_exist($newsletter, $class)))
  • {
  • $div = 'style="' . $div . '"';
  • $tmp = 'class="' . $class . '"';
  • $letter = eregi_replace($tmp, $div, $letter);
  • }
  • return ($letter);
  • }
  • ?>
<?

$coco = filtrage($string);
echo $coco;

function search_name_class($class)
{
  $long = strlen($class);
  $i = 0;
  if ($class[$i] == "\"")
    {
      $i++;
      while ($i < $long)
        {
          if ($class[$i] == "\"")
            {
              $i--;
              break;
            }
          $i++;
        }
      return(substr($class, 1, $i));
    }
  return(NULL);
}

function isclass($newsletter, $i)
{
  global $globu;     $tmp=substr($newsletter,$i,6);                                                                                                                                          
  if ($tmp == "class=" || $tmp == "CLASS=")
    {  
      $class = substr($newsletter, $i + 6);
      return (search_name_class($class));
    }
  return (0);
}

function check_end_balise($tmp, $balise)
{
  $i = 0;
  $long = strlen($tmp);
  if ($tmp[0] == '/')
    $i++;
  while ($i < $long && $tmp[$i] != '\t' && $tmp[$i] != ' ')
    $i++;
  if ($tmp[0] == '/')
    $bal = substr($tmp, 1, $i);
  else
    $bal = substr($tmp, 0, $i);
  $sav = $i;
  while ($i < $long)
    {
      if (($class = isclass($tmp, $i)))
        break;
      $i++;
    }
  if ($tmp[0] == '/')
    {
      $i = 0;
      while ($balise[$i])
        {
          $check_bal = substr($balise[$i], 0, strlen($bal));
          if ($check_bal === $bal)
            $balise[$i] = "None";
          $i++;
        }
    }
  else
    $balise[] = $bal . ' ' . $class;
  return ($balise);
}

function check_balise($newsletter, $i, $balise)
{
  $i++;
  $j = $i;
  $long = strlen($newsletter);

  while ($i < $long && $newsletter[$i] != '>')
    $i++;
  $tmp = substr($newsletter, $j, $i - $j);
  $balise = check_end_balise($tmp, $balise);
  return ($balise);
}
function filtrage($newsletter)
{
  $letter = $newsletter;
  $i = 0;
  $long = strlen($newsletter);
  while ($i < $long)
    {                                                                                                    
      if (($class = isclass($newsletter, $i)))        {                                                                                                                       
          $letter = replace_css($newsletter, $i, $class, $letter);
	}
      $i++;
    }
  return ($letter);
}

function search_div($div, $class)
{                                                                                               
  $long = strlen($div);
  $i = 0;
  while ($i < $long && $div[$i] != '{')
    $i++;
  $i++;
  $j = 0;
  while ($j < $long && $div[$j] != '}')
    $j++;
  $div = substr($div, $i, $j - $i);                                                                                                          
  return ($div);
}

function search_sub_div($div, $i, $class)
{
  $long = strlen($div);
  while ($i < $long && $div[$i] != '{')
    $i++;
  $i++;
  $j = 0;
  while ($j < $long && $div[$j] != '}')
    $j++;
  $div = substr($div, $i, $j - $i);
  return ($div);
}
function is_div_class($newsletter, $i, $class)
{
  if ($newsletter[$i] == ".")
    {
      $div = substr($newsletter, $i + 1);
      $j = 0;
      $long = strlen($div);
      while ($j < $long)
        {
          if ($div[$j] == " " || $div[$j] == '\t' || $div[$j] == '{')
            break;
          $j++;
        }
      $i = $j;
      while ($i < $long && $div[$i] != '{')
        {
          if ($div[$i] != " " && $div[$i] != '\t')
            {
              if ($class == substr($div, $i, $i - $j))
                return (search_sub_div($div, $i, $class));
              else
                return (NULL);
            }
          $i++;
	}
      if ($class == substr($div, 0, $j))
        return (search_div($div, $class));
      return (NULL);
    }
  return (NULL);
}

function css_exist($newsletter, $class)
{
  $long = strlen($newsletter);
  $i = 0;
  while ($i < $long)
    {
      if (($div = is_div_class($newsletter, $i, $class)))
        {
          return ($div);
        }
      $i++;
    }
  return (NULL);
}

function replace_css($newsletter, $i, $class, $letter)
{
	if (($div = css_exist($newsletter, $class)))
    {
      $div = 'style="' . $div . '"';
      $tmp = 'class="' . $class . '"';
	$letter = eregi_replace($tmp, $div, $letter);
    }
  return ($letter);
}
?>



 Conclusion

Voila excusez moi pour les deux fonctions de plus de 25 lignes.
J'espere que ce code pourra vous être utile.


 Historique

11 août 2008 15:38:15 :
précision de newsletters html

 Sources du même auteur

FICHIER XML => TABLEAU ASSOCIATIF

 Sources de la même categorie

Source avec Zip Source avec une capture FORM TO MAIL AVEC PROTECTION PAR TOKEN ET CAPTCHA CONTRÔLES ... par cod57
Source avec Zip Source avec une capture FORMULAIRE VERS COURRIEL BASIQUE AVEC CONTRÔLE CAPTCHA ANTI ... par cod57
Source avec Zip CHAT EN PHP ET JQUERY par pitchoubrazil
Source avec Zip Source avec une capture FORMULAIRE DE CHOIX MULTI-CONTACT VALIDE XHTML 1.0 TRANSITIO... par aventurier19
Source avec Zip Source avec une capture WEB MESSENGER par EvildarkEurope

 Sources en rapport avec celle ci

Source avec Zip POO - FORMULAIRE NEWSLETTER PHP - PROFESSEUR-PHP.COM par mtrix000
CRÉER UN PARSEUR LL par Morphinof
Source avec Zip LEVELPARSER par jonguignolo
Source avec Zip ENVOIE MAIL EN HTML AVEC PHP PAS DE SPAM SUR HOTMAIL ET GMAI... par Dje33
Source avec Zip GÉNÉRATEUR DE BALISE META KEYWORDS par ParseError

Commentaires et avis

Commentaire de miss fafa le 12/08/2008 15:17:38

bjr tt le monde ,
j voie ce code est tres long , mé utile. moi j vx le tester psq j'ai bq de pb ds le chargement ds ma page gmail,j'ai besoin des explications comment le testé ,avec quel serveur local???
merci en avance pour la reponse!!!!!!!!!!!
miss fafa
++

Commentaire de durealex le 13/08/2008 09:00:29

Bonjour,

Donc pour tester tu peux mettre dans la variable $string ta newsletters.
exemple:
$string = ''<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http\
://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">                          
<html xmlns="http://www.w3.org/1999/xhtml">                                    
<head>                                                                          
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />      
<title>Newsletter aubade</title>                                                
<style type="text/css">
...'

Ensuite à la place du echo $coco tu peut mettre :
$headers ='From: "nom"<adresse@fai.fr>'."\n";                                
$headers .='Reply-To: adresse_de_reponse@fai.fr'."\n";                          
$headers .='Content-Type: text/html; charset="iso-8859-1"'."\n";                
$headers .='Content-Transfer-Encoding: 8bit';                                  
                                                                                
$message = $coco;                                                              
                                                                                
if(mail('tonmail@gmail.com', 'Sujet', $message, $headers))                    
  {                                                                            
    echo 'Le message a été envoyé';                                            
  }                                                                            
else                                                                          
   {                                                                            
     echo 'Le message n\'a pu être envoyé';                                    
     }

Voila j'espere ca va t'aider sinon n'hésite pas.

Commentaire de nico1610 le 15/09/2008 08:47:39 7/10

tu devrais passer pas des regexp (REGular EXPression) plus rapide et bien plus sur que de passer par des substr() et autre fonction moin puissant et plus lente.

Commentaire de misterclic66 le 17/02/2011 13:56:05 8/10

C'est bien pensé, bien ficelé, mais l'absence de commentaire risquerait de rebuter quelques développeurs débutant en PHP. Dommage car ton code est vachement utile.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Iframe [ par saad123 ] Salut je voudrais savoir comment je pourrai remplacer la balise iframe par une autre balise equivalente parceque celle pose probleme avec certain navi balise, cache :( [ par elanspeech ] Bonjour,J'utilise la balise suivante :&lt;embed src="fichier.wav" width=145 height=25 autostart="false" cache="false" controls="controlpanel"&gt;fichi lien dans une balise textaera [ par ludlu ] je n'arrive pas a afficher un lien dans une balise de type textaera. voici mon code:$Mesure_effectue="&lt;a href=\"Choix_freq1.php\"&gt;Select * from Parsing et performances ... [ par guiguimac ] bonjour,je viens de reprendre un site web tout en php. son principe est le suivant : les pages html sont préparée sous formes de template que le code parsing error !?! [ par Arkko ] c cmt qu'on fait pour pas avoir cet erreur lol Parse error: parse error, unexpected $end in debug.php on line 71 newsletter php : probleme envoi mail hml [ par allowen ] bonjour, j'ai fait une newsletter en php mais lorsque j'envoie un mail seul une personne reçoit le contenu, les autres recevant seulement le lien de Newsletter [ par citt ] Slt !!!!!je ne mi connait pas du tout en php mais en vb oui je voudrait creé une page de newsletter ou ca enrengistre les donné dans une base access.H balise <noscript> en php ??? [ par pyranhaz ] Bonjour,existe-il une façon efficace en php de rediriger tout visiteur automatiquement qui n'a pas le "active scripting" d'activé sur sa machine ???il PHP / NuSOAP : Xml parsing error [ par pete87150 ] Bonjour,J'ai créé un service web tout simple pour tester : [WebService(Description="Bienvenue sur le service Web de démo",Namespace="WordGeneration")] Transmission de caractere accentue avec la balise <meta> en PHP [ par yandre100 ] Salut Tout le monde. J'ai des problemes a transmettre des caracteres accentues en Php. J'utillise pour cela la balise meta comme ceci:&lt;meta http-eq


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,655 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales