begin process at 2012 05 31 06:26:06
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Général

 > 

Prob de mail html


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Prob de mail html

samedi 15 juillet 2006 à 18:49:14 | Prob de mail html

DarkCid

Membre Club
Yaoh ! Voilà le contexte, je dois envoyer des mails promotionnel avec des images histoire que se soit plus sympa à voir, donc mail html oblige. J'ai récupéré sur phpcs cette fonction : function htmlMailing($sendTo,$subject,$htmlMessage,$textMessage,$additional_headers = '',$additional_parameters = '') { // ici on cherche les fichiers inclus dans l'HTML par src="..." preg_match_all('@src="([\w.]+)"@im',$htmlMessage,$preg_result); $file[0] = array(); foreach( $preg_result[1] as $name ) { // on evite de faire des doublons... if(!in_array($name,$file[0])) { // on pose un identifiant pour chaque fichier trouvé dans l'HTML $ID = md5( uniqid ( rand() ) ).$_SERVER['SERVER_NAME']; $file[0][$name] = $ID; $file[1][$name] = '(src="'.$name.'")'; $file[2][$name] = 'src="cid:'.$ID.'"'; } } unset($preg_result); $htmlMessage = preg_replace($file[1],$file[2],$htmlMessage); // La frontière des messages de type MIME $boundary = '-----=' . md5( uniqid ( rand() ) ); // On ajoute dans l'header du mail le fait que c'est un message MIME $additional_headers.= NL.'MIME-Version: 1.0'.NL; // multipart/related veux dire que les fichiers inclus seront liés dans le message $additional_headers.= 'Content-Type: multipart/related; boundary="'.$boundary.'"'.NL; $message = $textMessage.NL.NL; //au cas où le navigateur ne sache pas lire les types MIME $message.= '--'.$boundary.NL; // frontière $message.= 'Content-Type: text/html; charset="iso-8859-1"'.NL; // entete HTML $message.= 'Content-Transfer-Encoding: 8bit'.NL.NL; $message.= $htmlMessage.NL.NL; // corps du message // on inclu tous les fichiers utilisés : foreach( $file[0] as $name => $ID ) { $message.= '--'.$boundary.NL; $message.= 'Content-Type: '.mime_content_type($name).'; name="'.$name.'"'.NL; $message.= 'Content-Transfer-Encoding: base64'.NL; $message.= 'Content-ID: <'.$ID.'>'.NL.NL; $message.= chunk_split(base64_encode(file_get_contents ($name))).NL.NL; } $message.= '--'.$boundary.'--'; mail($sendTo, $subject, $message, $additional_headers, $additional_parameters); } Alors juste avant, je fabrique un message html (un peu comme si je faisais un echo de toute une page html), je l'affiche pour debug et il affiche ce que je ve, ouf ! Le prob c'est que pour envoyer ce message, là il bug et il me met ça : Warning: preg_replace(): Empty regular expression in /home.10.2/signanet/www/Pages/adminenvoi.php on line 32 (pour info, la ligne 32 c'est celle là :$htmlMessage = preg_replace($file[1],$file[2],$htmlMessage);) Alors que dois-je faire ?
samedi 15 juillet 2006 à 23:44:50 | Re : Prob de mail html

rrk275

peut tu poser un echo d'un $file[1] classique ( bien evidemment pour chaque case de celui ci ^^) d'un $file[2] pour le $htmlMessage je pense c'est bon ^^ (d'apres le message d'erreur y en un vide ..
eventuellement essaye de faire  foreach( $preg_result[0] as $name ) ..
dimanche 16 juillet 2006 à 00:37:56 | Re : Prob de mail html

DarkCid

Membre Club
Yaoh !

aucun file n'affiche koi ke se soit, ke se soit file[1] ou file[2] et foreach( $preg_result[0] as $name )  ne change rien non plus.

Du coup, je suppose k'on peut croire que le problème vient du preg_match_all non ?
dimanche 16 juillet 2006 à 00:40:43 | Re : Prob de mail html

rrk275

balance les arguments de preg_match_all('@src="([\w.]+)"@im',$htmlMessage,$preg_result);
et les resultats  .. (je pense qu'il y en a aucun .. ) , au fait pourquoi a tu mis foreach( $preg_result[1] as $name )  ? ( c'est une question relle je m'y connais pas beaucoup... )

dimanche 16 juillet 2006 à 00:44:19 | Re : Prob de mail html

DarkCid

Membre Club
Yaoh !

SI je balance cette partie, d'après ce que j'ai compris du code k'on m'a passé, mon message html n'aura plus d'images pour ceux qui le recevront, ce qui est logique puisque le chemin des images est en relatif. Cette partie du code est donc censé remplacé les chemins relatif par des chemin que n'importe qui peut comprendre, enfin je pense.
dimanche 16 juillet 2006 à 00:54:50 | Re : Prob de mail html

rrk275

Mdr balance ... montre ^^ je pensais pas a l'enlever

dimanche 16 juillet 2006 à 01:12:01 | Re : Prob de mail html

rrk275

apres avoir bien regardé ton code certaine chose m'étonne ,
 
foreach( $preg_result[0] as $name )
{
//ici $name contient src="monimage.jpg" et tu fais
$file[0][$name] = $ID;
$file[1][$name] = '(src="'.$name.'")';
$file[2][$name] = 'src="cid:'.$ID.'"';
}

je t'ai donc mitonné un pti code
<?
$htmlMessage = '<img src="banane.jpg">';
preg_match_all('@src="([\w.]+)"@im',$htmlMessage,$preg_result);
for($i= 0;$i<count($preg_result[0]);$i++)
{
    $file[0][$i] = '/'.$preg_result[0][$i].'/';
    $file[1][$i] = $_SERVER['SERVER_NAME'].$preg_result[0][$i];
}
$htmlMessage = preg_replace($file[0],$file[1],$htmlMessage);
echo $htmlMessage;
?>

marche parfait chez moi a adapter , mais c'est relativement simple ..donc je te laisse faire .. au fait le 1 ne change rien comme il n'y  a aucune parenthese mais je pense que c'est aussi bien 0 ..
dimanche 16 juillet 2006 à 10:07:56 | Re : Prob de mail html

DarkCid

Membre Club
Yaoh !

Je sais pas si y a du mieux ou pas, mais y a du changement :

Warning: preg_replace(): Empty regular expression in /home.10.2/signanet/www/Pages/adminenvoi.php on line 22

Warning: Invalid argument supplied for foreach() in /home.10.2/signanet/www/Pages/adminenvoi.php on line 39

La ligne 39, c le foreach ki est avant la fin.
dimanche 16 juillet 2006 à 11:35:04 | Re : Prob de mail html

rrk275

salut ,
Il fallait integrer mon code à ta page, la ca à apparement pas reussi et je me demande comment tu as fait ...


function htmlMailing($sendTo,$subject,$htmlMessage,$textMessage,$additional_headers = '',$additional_parameters = '')
{
// ici on cherche les fichiers inclus dans l'HTML par src="..."
preg_match_all('@src="([\w.]+)"@im',$htmlMessage,$preg_result);
$file[0] = array();
foreach( $preg_result[1] as $name )
{
// on evite de faire des doublons...
if(!in_array($name,$file[0]))
{
// on pose un identifiant pour chaque fichier trouvé dans l'HTML
$ID = md5( uniqid ( rand() ) ).$_SERVER['SERVER_NAME'];
$file[0][$name] = $ID;
$file[1][$name] = '(src="'.$name.'")';
$file[2][$name] = 'src="cid:'.$ID.'"';
}
}
unset($preg_result);

$htmlMessage = preg_replace($file[1],$file[2],$htmlMessage);
ca on supprime

preg_match_all('@src="([\w.]+)"@im',$htmlMessage,$preg_result);
for($i= 0;$i<count($preg_result[0]);$i++)
{
    $file[0][$i] = '/'.$preg_result[0][$i].'/';
    $file[1][$i] = $_SERVER['SERVER_NAME'].$preg_result[0][$i];
}
$htmlMessage = preg_replace($file[0],$file[1],$htmlMessage);

et voila comment j'aurais fait masi ptet a tu fais ainsi ... je vais donc tester la fonction ..

// La frontière des messages de type MIME
$boundary = '-----=' . md5( uniqid ( rand() ) );

// On ajoute dans l'header du mail le fait que c'est un message MIME
$additional_headers.= NL.'MIME-Version: 1.0'.NL;
// multipart/related veux dire que les fichiers inclus seront liés dans le message
$additional_headers.= 'Content-Type: multipart/related; boundary="'.$boundary.'"'.NL;

$message = $textMessage.NL.NL; //au cas où le navigateur ne sache pas lire les types MIME
$message.= '--'.$boundary.NL; // frontière
$message.= 'Content-Type: text/html; charset="iso-8859-1"'.NL;
// entete HTML
$message.= 'Content-Transfer-Encoding: 8bit'.NL.NL;
$message.= $htmlMessage.NL.NL; // corps du message
// on inclu tous les fichiers utilisés :
foreach( $file[0] as $name => $ID )
{
$message.= '--'.$boundary.NL;
$message.= 'Content-Type: '.mime_content_type($name).'; name="'.$name.'"'.NL;
$message.= 'Content-Transfer-Encoding: base64'.NL;
$message.= 'Content-ID: <'.$ID.'>'.NL.NL;
$message.= chunk_split(base64_encode(file_get_contents ($name))).NL.NL;
}
$message.= '--'.$boundary.'--';
mail($sendTo, $subject, $message, $additional_headers, $additional_parameters);
}

dimanche 16 juillet 2006 à 11:40:34 | Re : Prob de mail html

DarkCid

Membre Club
Yaoh !

Tu va tester la fonction ? Tu me dira si sa marche. Moi en attendant, je me suis pas fait chier, g vaqué tt ce qui concerne les fichiers, et g remplacé dans la création du mail les chemins relatifs en absolu

Comme ça marche bien, prends ton temps pour trouver le prob, mais sa m'intéresse toujours de connaître le problème (sa m'agace d'ailleurs kan je comprends pas).

1 2 3

Cette discussion est classée dans : message, file, html, name, nl


Répondre à ce message

Sujets en rapport avec ce message

Securiser un upload !! [ par SnOOpss ] Bonjour je doit faire un systeme d'upload sur un site, sans inscriptions, donc le premier venu pourra uploader des fichiers sur le serveur et je voula Mail multiformat vide sous Mail Mac [ par cseagle ] Bonjour, Je viens de développer une application php d'envoi de newsletter multi format (Content-Type: multipart/alternative) Dans les webmails qui n upload image [ par mariobotta ] bonjour,j'ai créer un système d'upload pour des image stocker dans une base de donnée .mon script fonctionne bien en local mais plus sur le net (je su parse erreur [ par hanlin ] je ne sais quoi faire pour regler ce probleme de "parse error" dans ce code...quelqu'un pourrait-il m'aider ?mysql_select_db($database_contact, $conta je patauge avec mon code !! [ par hanlin ] voila...je veux faire un formulaire d'inscription tout simple avec possibilité d'iploader un fichier doc ou pdf...j'utilise pour ça dreamweaver et je upload images [ par refkaben ] Bonjour à tous,je veux uploade une image, j'ai fait des recherches sur phpcs et j'ai eu ce code que j'ai adapté à mon cas.le problème c'est que ça fon Problème d'upload en php [ par Adrien4 ] Bonjour,j'ai trouvé un code php sur le net il y a quelques mois, que je ne retrouve plus.Il fonctionnait, même chez free, mais après l'avoir "arrangé" AIDEZ MOI PAR PITIÉ [ par Toolsweb ] Bon, j'ai ça  $taille_octets_max = 1048576; // Taille maxi du fichier, en octets.   if ($file_name == "none" || !$file_name)  {    $error="Sp&eacute;c fonction "\'" [ par magicsmacks ] Bonjour, Je suis en train de programmer un forum de disussion... Mais j'ai un petit problème : J'ai programmé la page de formulaire pour que l'utilis problème d'upload [ par romiain ] Salut à tous, J'ai un problème avec mon upload, lorsque je charge une photo j'ai l'erreur suivante Notice: Undefined variable: name_file in c:\program


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

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,468 sec (3)

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