Mailing : fonction mail() ou autre ?? - PHP - Programmation
Marsh Posté le 15-04-2008 à 18:48:44
Je pense pas que ton script est un réel problème mais c'est pas toujours évident ce genre de fonction, franchement je suis d'accord avec naeh, PHPMailer est l'idéal pour les maillings list ou les newsletters, tu ne feras jamais mieux et ca s'adaptera sans problème.
Marsh Posté le 15-04-2008 à 19:13:51
pour plus de réponse il faudrait que tu puisse déterminer quel type (taille, etc) de fichier coince, il faudrait resserrer un peu les mailles du filet si j'ose dire...
Je me demande si il ne manque pas un /n a la fin de la ligne 63 (il faut pas une ligne vide apres les données ??)... je dit ça mais moi non plus je suis pas très calé en mail... =) dit moi ce que t'en pense.
Marsh Posté le 16-04-2008 à 11:40:34
merci les gars pour vos reponses
masterpsx : je vais voir ce que je pex faire concernant PHPMailer, je ne m'y connais vrmt pas!!
wrksx : j'ai bien mis un '\n' a la fin de la ligne 63 mais ca n'a rien change je suis tres embete, je ne sais quoi faire
ce qui est bizarre c'est que certain fichiers sont bons, mais d'autres non, c peut etre au moment de l'encodage que ca foire...!!
Marsh Posté le 16-04-2008 à 12:02:58
je rajoute encore autre chose, qui rend les choses tres mysterieuses : les fichiers qui ne s'ouvrent pas sur les autres ordi, s'ouvrent sur mon ordi, je ne sais vraiment pas pk, la seule chose qui differe c'est que moi j'ai vista et les autres xp!!
Marsh Posté le 16-04-2008 à 12:09:33
PHPMailer est une class, ca ne t'empechera pas de créer ta propre fonction pour ton script mais au lieu d'utiliser simplement la fonction mail() de php, tu utilises ses fonctions qui sont trés complétes (smtp, fichiers joint, envoie multiple ect...).
Je comprend que tu veuilles créer tout toi-même mais pour certaine choses (mail, status serveur, pdf ect...) il vaut mieux parfois utiliser des class connus et au point.
Marsh Posté le 16-04-2008 à 12:41:32
oui t'as raison, j'ai deja commence a lire la doc sur PHPMailer. tu n'aurais pas par hasard un lien pour ca? g trouve http://stephaneey.developpez.com/t [...] phpmailer/ mais qui date de 2004, je ne sais pas si c'est toujours d'actualite
j'aimerai aussi te poser qlq question quant a l'utilisation de cette classe si ca ne te derange pas.
y a t il un moyen plus simple de faire un envoi multiple et peronnalise? avec mail je fesais :
Code :
|
quel est a ton avis le meilleur moyen de gerer ce mailing: sauvegarder les destinataires ds une bdd ou ds une variable de session de type tableau...??
Merci
Marsh Posté le 16-04-2008 à 13:17:14
Ca fait un moment que je code plus trop et n'ai pas regardé cette class mais si tu ouvre le fichier README, il y a un exemple assez simple. Sinon le site officiel si tu comprend un peu l'anglais : http://phpmailer.codeworxtech.com/tutorial.html
Disons que de mémoire tu pourrais ne rajouter que l'adresse email dans ta boucle au lieu de faire un envoie pour chaque membre mais si ton email est personalisé (nom et prénom) ca reviendra au même.
Marsh Posté le 16-04-2008 à 13:37:56
OK, donc il y a pas un moyen autre qu'envoyer le mail autant de fois que le nombre des destinataires???
cela ne posera pas de probleme au niveau spams???
Marsh Posté le 16-04-2008 à 13:58:54
si tu envoi de nombreux mails il te faudra certainement étaler les envoi dans le temps pour ne pas surcharger le serveur.
Marsh Posté le 16-04-2008 à 14:48:55
redah75 a écrit : OK, donc il y a pas un moyen autre qu'envoyer le mail autant de fois que le nombre des destinataires??? |
Ca depend, si tu veut personalisé le message avec le nom du membre non sinon oui c'est possible, en ce qui concerne le serveur ca dependra du nombre de membre, de ton hebergeur, de la maniére dont tu envois les emails (smtp ou mail()) ect... Pour etaler, c'est pas forcement compliqué, tu peut rajouter un champ dans ta table pour le statut d'envoie par exemple et limiter l'envoie groupé à un certain nombre (50, 100 ect...).
Marsh Posté le 17-04-2008 à 12:01:42
ca commence mal, je n'arrive meme pas a faire fonctionner phpmailer
j'ai suivi a la lettre l'installation : http://phpmailer.codeworxtech.com/install.html & http://phpmailer.codeworxtech.com/tutorial.html, mais lorsque je veux envoyer un mail test, ca fait rien et ca m'affiche rien sur la page!!
voici mon code, y voyez vous une erreur???
Code :
|
merci encore une fois de votre aide
Marsh Posté le 17-04-2008 à 12:09:21
ou sinon, que pensez vous de la classe mime.mail est elle mieux que phpmailer?
Marsh Posté le 17-04-2008 à 12:31:13
C'est sur que si c'est le code de ta page, ca marchera jamais, tu n'as même pas ouvert php, le smtp est optionel commence par un truc simple et verifie que ta class se trouve au bon endroit :
<?php
require("class.phpmailer.php" );
$mail = new PHPMailer();
$mail->From = "tonmail@hotmail.com";
$mail->AddAddress("tonemaildetest@hotmail.com" );
$mail->Subject = "First PHPMailer Message";
$mail->Body = "Hi! \n\n This is my first e-mail sent through PHPMailer.";
if(!$mail->Send())
{
echo 'Message was not sent.';
echo 'Mailer error: ' . $mail->ErrorInfo;
}
else
{
echo 'Message has been sent.';
}
?>
Marsh Posté le 17-04-2008 à 13:13:14
wow, alors la g rien compris, maintenant que j'ai enleve SMTP ca marche bien a quoi ca sert alors de d'utiliser le SMTP? quels sont les avantages et inconvenients?
l'ouverture de la balise php etait un oublie lorsque j'ai copie le code pour le poster
Marsh Posté le 17-04-2008 à 13:21:56
j'ai trouve ca :
What mailer gives me the best performance?
On a single machine the mail() or sendmail mailers give you the best performance because they do not have the added overhead of SMTP. If you have you have your mail server on a another machine then SMTP is your only option, but you do get the benefit of redundant mail servers.
devrais alors oublie SMTP et utiliser la methode Mail ??
Marsh Posté le 17-04-2008 à 13:22:41
Le smtp c'est pour utiliser un serveur smtp de courrier tout simplement mais dans ce cas il faut préciser ton serveur voir le nom d'utilisateur et le mot de passe si besoin. Si tu avais laissé les valeurs par defaut, ca peut pas marcher évidement (vu que le serveur n'existe pas) et en les supprimant ca utilisera la fonction mail() de PHP tout simplement
PS : Je connais pas mime.mail désolé
Marsh Posté le 17-04-2008 à 13:27:37
et quest ce que tu me conseilles utiliser?? mail ou smtp? sachant que je vais devoir faire des mailing qui peuvent depasser 1000 ou 2000 destinataires, avec 1 ou plusieurs pieces attachees...
j'oublie maintenant mime mail puisque phpmailer a l'air de bien marcher
Marsh Posté le 17-04-2008 à 13:59:37
Difficile a dire, ca depend de ton hebergeur aussi, il est fréquent qu'il y est des restrictions à ce niveau d'ou l'interet d'utiliser un serveur smtp dans ce cas, sinon mail() est probablement plus rapide.
Marsh Posté le 17-04-2008 à 14:28:25
je suis en dedie chez OVH, et le SMTP semble pose probleme!!
je vais donc utiliser Mail() et te tiendrai au courant...
juste une petite precision, Mail() est attribue par defaut si on met pas $mail->IsMail(); ???
et une derniere question
pour les fichier attaches telecharges depuis un formulaire, quel est le meilleur moyen de les stocker, ds une base de donnees au format blob ou ds un dossier sur le serveur??
Merci bien
Marsh Posté le 17-04-2008 à 15:07:32
Pas besoin de IsMail(), dailleur ca existe cette fonction dans cette class ? Tu dois juste préciser si tu veut utiliser smtp.
Peut importe pour les fichiers attachés, si tu l'upload via un formulaire, il sera envoyé sur le serveur donc a toi de voir si tu veut le stocker avant ou pendant. Tu dois juste utiliser la fonction AddAttachment() de la class mais je peut pas t'en dire beaucoup plus, j'ai jamais essayé cette fonctionalité, j'ai toujours envoyé simplement des mails au format HTML.
Marsh Posté le 17-04-2008 à 15:40:09
Ok merci bp
Oui IsMail() existe ds cette classe : http://stephaneey.developpez.com/t [...] mailer/#L5
Marsh Posté le 21-04-2008 à 18:49:34
Bonjour, j'espere que vous avez passe un bon week end
je suis encore de retour avec des nouvelles questions
y a t il un moyen de mettre un accuse de reception?
apparement le X-Confirm-Reading-To ne fonctionne pas correctement!!
masterpsx : tu m'avais conseille d'etaler les envoi dans le temps pour ne pas surcharger le serveur, pourras tu me donner plus de details stp? je ne vois vraiment pas cmt faire!!
Merci bien
Reda
Marsh Posté le 22-04-2008 à 10:24:47
Je crois pas que phpmailer a une option pour les accusés de reception, en même temps si c'est pour une newsletter encore heureux, tu veut pas recevoir 2000 accusés je suppose.
Je connais pas du tout "X-Confirm-Reading-To" désolé, je peut pas t'aider la dessus, comme je te l'ai dis mon utilisation de cette class ou de la fonction mail s'est toujours limité a du classique, a savoir envois d'email au format html et texte.
C'est pas moi qui t'est conseillé de scinder tes envois, c'est wrksx, c'est effectivement une bonne idée si ton hebergeur te limite et que tu as beaucoup de membre.
Comme je te l'ai dis plus haut, tu peut par exemple rajouter un champ "status" (1 ou 0 par exemple) dans ta table membre (ou abonné à la newsletter) que tu met à jour lors de l'envoie du mail, de cette façon tu sais a qui tu as envoyé déja le mail. Ensuite rien de plus simple de vérifier si le champ est a 1 et de rajouter une limite dans ta requéte mysql. (exemple pour n'envoyer que 50 email : WHERE status = 0 ORDER BY id LIMIT 0, 50).
Marsh Posté le 22-04-2008 à 10:48:59
Je pense avoir trouve la solution je te la donne, elle te/vous sera peut etre utile un jour
j'ai telecharge et installe la derniere version phpmailer v2 qui contient une propriete de confirmation: $ConfirmReadingTo
http://phpmailer.codeworxtech.com/properties.html
ah, desole wrksx, g attribue ton idee a qlq un d'autre
OK, pour le principe, g compris, mais comment envoyer les 50 premiers mails ds un premier temps, puis qlq secondes ou minutes apres, j'envoie 50 autres ainsi de suite... ??
deja, comment pourrais je savoir si mon serveur est limite ou s'il sature?? je suis sur un serveur dedie.
Marsh Posté le 22-04-2008 à 11:28:54
redah75 a écrit : OK, pour le principe, g compris, mais comment envoyer les 50 premiers mails ds un premier temps, puis qlq secondes ou minutes apres, j'envoie 50 autres ainsi de suite... ?? |
Il faudra le faire manuellement, c'est le plus simple, quand a ton serveur qui sature, je suppose que tu auras un message d'erreur si c'est le cas ou que le mail ne sera pas envoyé.
Marsh Posté le 22-04-2008 à 12:44:56
je ne pense pas que ce soit 'ton' serveur qui risque de saturer mais plutôt le smtp que tu utilise.. d'ailleur chez ovh c'est particulier, ils s'occupent eux meme de l'etalement dans le temp de tes envois.
http://forum.ovh.com/showthread.php?t=31770
http://www.phpcs.com/infomsg_FONCT [...] 08157.aspx
Marsh Posté le 22-04-2008 à 13:56:42
ah ca c une bonne nouvelle qu'OVH temporise les envois
mais le probleme est que j'utilise pas la classe SMTP c'est pas grave?
Marsh Posté le 22-04-2008 à 14:15:31
Je pense que wrksx ne parle pas du smtp que tu configures avec phpmailer mais de celui utilisé par ton serveur dédié pour envoyer les mails.
Si tu est chez ovh, tu n'as pas a te soucier du nombre de mail apparement, c'est eux-même qui temporise les envois.
Marsh Posté le 15-04-2008 à 18:26:14
Bonjour,
j'ai deja poste au meme sujet mais j'ai pas eu de reponses : http://forum.hardware.fr/hfr/Progr [...] m#t1690372
je repose ma question autrement
quelle fonction me conseillez vous utiliser afin de realiser ce que je dois faire: selectionner des destinataires depuis la base de donnees et envoyer un mail avec une ou plusieurs pieces attachees...?
ou sinon, voyez vous un probleme ds le script que j'ai mis ??
merci de votre aide
Reda
Message édité par redah75 le 15-04-2008 à 18:29:41