Mynewsletter 1.0a

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Mynewsletter 1.0a

Re: Mynewsletter 1.0a

par Superpilou » 31 juil. 2009, 22:02

J'obtiens dans le navigateur le message suivant :

Warning: fopen(monfichierauploader.txt) [function.fopen]: failed to open stream: No such file or directory in /mnt/157/sdb/e/f/mondomaine/temp/admin/admin.php on line 128

Warning: feof(): supplied argument is not a valid stream resource in /mnt/157/sdb/e/f/mondomaine/temp/admin/admin.php on line 129

Pour avoir manipuler beaucoup de fichiers en php ces derniers temps, je pense savoir pourquoi.
Ton fichier ne se trouve pas ou tu lui indiques pour l'ouverture.
Par exemple si le fichier est dans le dossier A tu indiques dans la fonction fopen qu'il se trouve dans un dossier B.
Mets le je te conseille au même niveau que ton script pour ne pas avoir de problème.

par megapoulpe » 31 juil. 2009, 19:18

Salut, j'ai pas lu ton message en entier, mais j'ai déjà essayé de faire une newsletter en PHP.

Au niveau technique mon script marchait très bien, il découpait l'envoi par petits paquets de mails et tout.

Mais voilà, quand on fait une newsletter soit même, la majeure partie des email n'arrive pas à destination à cause du blacklistage :

http://www.webmaster-hub.com/index.php?showtopic=44318

Mynewsletter 1.0a

par Emmanuel007 » 25 juil. 2009, 19:01

Salut tous,


Je suis tout nouveau ici, et tout nouveau dans le PHP aussi. Je m'y plonge par nécessité : pour mettre en place une newsletter.


J'ai découvert le script Mynewsletter 1.0a que j'ai trouvé très sympa : simple d'emploi et d'installation et sans base de donnée.

Quelques soucis cependant.
Le premier était que l'adresse d'expéditeur dans les emails envoyés était celle du serveur mail ; pas la mienne.
J'ai tout de même pu trouver comment corriger celà.
Il suffisait d'indiquer "3" entetemails :

Code : Tout sélectionner

$entetemail = 'From: "nom" <[email protected]>'."\n"; $entetemail .='Content-Type: text/html; charset="iso-8859-1"'."\n"; $entetemail .='Content-Transfer-Encoding: 8bit';
Et ça marche ^^

Certains utilisateurs ont rapporté des problèmes de limite d'adresses. Je n'ai pas rencontré ce souci
chez moi (OVH PLAN90) : j'ai pu inscrire plus de 200 adresses sans qu'aucune ne saute.


Par contre, l'upload de fichiers txt, html ou htm ne marche pas du tout pour moi. Ce script de newsletter permet en effet deux méthodes d'envoi de newsletters :
- soit envoyer une newsletter au format htm, html ou txt déjà présente sur le serveur dans un dossier donné,
- soit uploader une newsletter depuis son ordi.

La première méthode marche mais pas la seconde.

J'obtiens dans le navigateur le message suivant :

Warning: fopen(monfichierauploader.txt) [function.fopen]: failed to open stream: No such file or directory in /mnt/157/sdb/e/f/mondomaine/temp/admin/admin.php on line 128

Warning: feof(): supplied argument is not a valid stream resource in /mnt/157/sdb/e/f/mondomaine/temp/admin/admin.php on line 129


Firefox plante même en beauté.

J'ai pensé que ça pouvait provenir d'une interdiction d'écriture dans le dossier où doit être copié le
fichier uploadé (le dossier admin je présume). Avec Filezilla, j'ai donc fait un clic-droit sur le dossier
en question, ouvert le panneau de modification d'attributs du fichier, et coché la case Ecrire des
permissions publiques (code 705). Mais avec ce code, le fichier admin.php refuse de s'exécuter.

Quelqu'un aurait-il une idée ?

Pour info, je copie ci-dessous la portion du fichier admin.php qui permet l'envoi des emails et qui
correspond au message d'erreur donné par Firefox.

Code : Tout sélectionner

//Interface ajout lettre à partir du serveur if($menu == "Envoyer une lettre(serveur)") { echo("<div align='center'><p><font color='#AE0000'><font size='4'>ENVOYER UNE LETTRE</font> </font></p><form method='post' action='admin.php'><p>Sujet : <br><input type='text' name='sujet'><br>"); echo("<br>Fichier : <br><input type='file' name='file' enctype='multipart/form-data'><br><br> <input type='submit' name='submit' value='Aper&ccedil;u'></p><p>&nbsp; </p></form> <p>&nbsp;</p></div>"); } //Interface ajout lettre distant if($menu == "Envoyer une lettre(ordinateur)") { $cpt3 = 0; $handle=opendir("./newsletter"); while ($file2 = readdir($handle)){if (ereg(".html$",$file2)or ereg(".htm$",$file2) or ereg(".txt$",$file2)){$filelist[$cpt3]=$file2;$cpt3++;}} echo("<div align='center'><p><font color='#AE0000'><font size='4'>ENVOYER UNE LETTRE</font> </font></p><form method='post' action='admin.php'><p>Sujet : <br><input type='text' name='sujet'></p><p>Fichier : <br>(html, htm, txt)<br>le fichier doit se trouver dans le dossier admin/newsletter<br><select name='file'>"); for($x=0;$x < sizeof($filelist);$x++){echo("<option>newsletter/$filelist[$x]</option>");} echo("</select><br><br><input type='submit' name='submit' value='Apercu'></p></form> <p>&nbsp;</p></div>"); } //Interface Apercu avant envoi(resultat de la requete ajout lettre) if(strlen($file)>=1 && strlen($sujet)>=1 && $pass2!=1) { $file = str_replace("\\","/",$file); $file = str_replace("//","/",$file); $fp = fopen("$file","r"); while (!feof($fp)){$page .= fgets($fp,4096);} fclose($fp); if(ereg(".txt$",$file)){$page = str_replace("\n","<br>",$page);} echo("<div align='center'><font color='#AE0000'>APERCU AVANT ENVOI<br><br><b> SUJET : $sujet<br></b></font><table width='75%' border='1'><tr><td>$page</td></tr></table>"); echo("<form method='post' action='admin.php?file=$file&&sujet=$sujet&&pass2=1'><p>Mot de passe : <br><input type='password' name='passsend'></p><p><input type='submit' name='submit' value='Envoyer'></p></form><p>&nbsp;</p></div>"); } //resultat de la requête apercu avant envoi if($passsend) { if ($passsend != $variable[0]){echo("<div align='center'><p><font size='5' color='#FF0000'>Mot de passe incorrect</font></p></div>");$pass2=0;} if ($passsend == $variable[0]) { $fp = fopen("../result.lst","r"); while (!feof($fp)){$ligne = fgets($fp,4096);$email = explode("|",$ligne);} fclose($fp); $fp = fopen("$file","r"); while (!feof($fp)){$page .= fgets($fp,4096);} fclose($fp); if(ereg(".txt$",$file)){$page = str_replace("\n","<br>",$page);} $cptmail = 0; $entetemail = 'From: "nom" <[email protected]>'."\n"; $entetemail .='Content-Type: text/html; charset="iso-8859-1"'."\n"; $entetemail .='Content-Transfer-Encoding: 8bit'; for($x=0;$x <= sizeof($email)-2;$x++){$adressed = "<a href='$variable[1]?id=$email[$x]'>$variable[1]?id=$email[$x]</a>";$code = "<hr><p><font size='2' face='Verdana, Arial, Helvetica, sans-serif'>Pour se d&eacute;sabonner &agrave; notre newsletter, cliquez sur le lien ci dessous :</font><br>";$courrier = $email[$x];mail("$courrier","$sujet","$page$code$adressed",$entetemail);$cptmail++;} } } //resultat de la requete envoyer la lettre if($pass2==1) { echo("<div align='center'><p><font size='4' color='#FF0000'>Op&eacute;ration r&eacute;sussie. Votre lettre a &eacute;t&eacute; envoy&eacute; &agrave; $cptmail destinataires </font> </p></div>"); $pass2=0; }