Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

[PHP5] - SIMPLE CLASSE D'ENVOI D'EMAIL


Information sur la source

Catégorie :E-Mail / Messagerie Classé sous : mail, email, pièce, courrier, joint Niveau : Débutant Date de création : 10/07/2008 Date de mise à jour : 01/08/2008 00:16:22 Vu / téléchargé: 8 412 / 747

Note :
8,8 / 10 - par 5 personnes
8,80 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (50)
Ajouter un commentaire et/ou une note

Description

Bonjour à tous,
voici une petite classe d'envoi d'email réalisée en php5 qui permet l'envoi d'email :
_ simple (un texte)
_ alternative (différentes versions d'un texte (plain et html généralement))
_ mixed simple (un texte et n pièces jointes (avec n > 0))
_ mixed alternative (différentes versions d'un texte avec n pièces jointes)

Il est possible d'avoir un accusé de reception de la lecture de l'email par votre correspondant (si son lecteur d'email le permet) et de gêrer tous les en-têtes de l'email.
Les images dans les body en html sont automatiquement join dans l'email lorsqu'ils sont accessibles par le script et il est possible de compresser des documents à la volée lors de l'ajout du document

Pour information, voici ces en-têtes avec l'explication de chacun :
'XPriority' : Priorité, de 1 à 5, généralement 3
'Sender' : Emetteur, par défaut la même valeur que le champs From
'ReplyTo' : Email de réponse (celui indiqué quand on clique sur Répondre), par défaut la même valeur que le champ From
'ReturnPath' : L'adresse email qui sera informée en cas d'erreur, par défaut la valeur de From
'From' : L'emetteur de l'email
'To' : Tableau de destinataires
'Cc' : Tableau de destinataires en Copie Carbone
'Bcc' : Tableau de destinataires en Copie Carbone Cachée
'DispositionNotificationTo' : Email ou envoyer l'accusé de réception
'XMailer' : Le nom de l'application qui à envoyé l'email
'Organisation' : L'organisation émettrice de l'email
'Date' : La date. Automatiquement mise à la date du moment lors de l'envoi
'MimeVersion' : Version des En-têtes MIME, par défaut 1.0. Mieux vaut laisser cela tel quel
'Subject' : Sujet de l'email

Voici le code :
 

Source

  • <?php
  • require_once ('Email/SimpleMail.php');
  • require_once ('Compression/GzCompression.php');
  • try {
  • $oEmail = new SimpleMail ();
  • $oEmail->From = 'moi@example.org';
  • $oEmail->To = array ('friend1@example.org', 'friend2@example.org');
  • $oEmail->Bcc = array ('secretFriend@example.org');
  • $oEmail->Subject = 'Nice Message';
  • $oEmail->addBody ('This message is a plain text message, very simple !');
  • $oEmail->addBody ('This message is in <b>html</b> format message, with some <u>special html tags</u>. You can also automatically add some <img src="image.png" alt="images" />. It\'s very simple !', 'text/html');
  • $oEmail->addAttachment ('/var/www/myDoc.pdf', MimeType::get ('pdf')); // Basic file !
  • $oEmail->addAttachment ('/var/www/myDoc.pdf', MimeType::get ('tgz'), 'myCompressedDoc.tgz', $oGzCompress); // Compressed File
  • $oEmail->send ();
  • echo 'You\'re message was sent';
  • }
  • catch (Exception $oE) {
  • var_dump ($oE);
  • echo 'An error occured during sending the message.<br />'.$oE->getMessage ();
  • }
  • ?>
<?php
require_once ('Email/SimpleMail.php');
require_once ('Compression/GzCompression.php');

try {
	$oEmail = new SimpleMail ();
	$oEmail->From = 'moi@example.org';
	$oEmail->To = array ('friend1@example.org', 'friend2@example.org');
	$oEmail->Bcc = array ('secretFriend@example.org');
	
	$oEmail->Subject = 'Nice Message';
	
	$oEmail->addBody ('This message is a plain text message, very simple !');
	$oEmail->addBody ('This message is in <b>html</b> format message, with some <u>special html tags</u>. You can also automatically add some <img src="image.png" alt="images" />. It\'s very simple !', 'text/html');

	$oEmail->addAttachment ('/var/www/myDoc.pdf', MimeType::get ('pdf')); // Basic file !
	$oEmail->addAttachment ('/var/www/myDoc.pdf', MimeType::get ('tgz'), 'myCompressedDoc.tgz', $oGzCompress); // Compressed File

	$oEmail->send ();

	echo 'You\'re message was sent';
}
catch (Exception $oE) {
	var_dump ($oE);
	echo 'An error occured during sending the message.<br />'.$oE->getMessage ();
}
?>

Conclusion

La classe lance des exceptions basiques (de la classe Exception). Je l'ai laissé volontairement tel quel afin que vous puissiez modifier les exceptions en fonction de vos besoins et de vos classes disponibles.

Pour ce qui est de la compression, c'est vraiment un système simpliste, juste pour montrer la simplicité de l'implémentation. Vous pouvez ensuite gerer vos propres classes de compression, qui doivent implémenter l'interface iCompression ou modifier le code de la classe SimpleMail avec vos Objects (Classe Abstraite ou Interface, etc)
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

10 juillet 2008 10:51:53 :
Mauvaise mise en page du code
10 juillet 2008 17:07:13 :
Oubli d'un quote dans l'exemple :) (Merci à Neigedhiver :))
15 juillet 2008 20:12:21 :
Ajout du support de l'envoi d'email en html avec images automatiquement intégrées. Ajout du support de la compression des pièces jointes à la volée
31 juillet 2008 23:33:22 :
Le code fonctionne maintenant à destination de Hotmail, des serveur Exchange, Gmail, Altern.org ! Testé sur les serveurs d'OVH (60gp)
01 août 2008 00:16:23 :
Support des accents dans le sujet ! :)

Commentaires et avis

signaler à un administrateur
Commentaire de neigedhiver le 10/07/2008 13:00:48

Plop !

Dis donc... Ca a l'air plutôt pas mal tout ça !
Forcément, c'est propre, joli à regarder, lisible et compréhensible... Forcément, c'est facile à réutiliser, etc...
Euh je suis pas sûr d'avoir des critiques négatives à faire...
Je vais pas pouvoir tester, donc pour le débogage et un éventuel retour pour des améliorations possibles, je ne suis pas en mesure d'apporter ça...

En tout cas, c'est très très complet, et ça change des sources d'envoi de mails qu'on trouve habituellement. Chapeau donc pour cette exhaustivité !

signaler à un administrateur
Commentaire de codefalse le 10/07/2008 13:31:50 administrateur CS

Et bien ! Personnnellement je craignais plus un "Ca existe déjà", "c'est du revu".
Ton commentaire fait plaisir :)

En fait je l'ai codé hier pour les besoins de la boite dans laquelle je suis et d'apres les premiers tests effectués, ca à l'air de fonctionner ! :)

signaler à un administrateur
Commentaire de Morphinof le 10/07/2008 16:47:03 10/10

Bah rien à dire !
C'est tout simple à utiliser, c'est propre, c'est fonctionnel... Que du bon quoi :D
Sa mérite une bonne note sa ;)
A la limite tu peu même t'amuser à intégrer un système de compression en option pour les pièces jointes, c'est la cerise sur le gâteau, à voir si sa l'alourdirai trop ou non ^^

signaler à un administrateur
Commentaire de codefalse le 10/07/2008 17:03:59 administrateur CS

Merci :)
Je ne l'ai pas précisé mais cette classe ne permet pas d'envoyer des documents avec des pièces jointes attachée au document (des images du document html par exemple).

Pour la compression c'est pas une mauvaise idée mais comment tu fait ? parce que si je les compresses en zip/tgz/bgz, le client devra forcément les décompresser, ce qui n'est pas forcément dans l'envie de l'émetteur de compresser les documents ?

signaler à un administrateur
Commentaire de neigedhiver le 10/07/2008 17:08:59 10/10

Ca existe déjà, c'est du revu... Ben oui, mais la question à se poser est "Est-ce que ça existe en aussi complet ?".
Des sources d'email, sur phpCS, j'en ai vu quelques unes (toi aussi je pense). Et là, je trouve qu'on atteint une sorte de sommet. On peut sûrement rajouter des trucs, mais sincèrement... Quand j'ai lu ça :

_ simple (un texte)
_ alternative (différentes versions d'un texte (plain et html généralement))
_ mixed simple (un texte et n pièces jointes (avec n > 0))
_ mixed alternative (différentes versions d'un texte avec n pièces jointes)

Associé à l'auteur, j'ai tout de suite compris que c'était de l'inédit sur phpcs... Ca pourrait être, à mon avis, une référence en matière de source d'email.
Et j'en profite pour noter, parce que quand même...

signaler à un administrateur
Commentaire de Morphinof le 10/07/2008 17:09:24

D'où l'idée de le mettre en option lors de l'ajout d'une pièce jointe car effectivement il faudra décompresser lors de la réception mais après si c'est des mails automatiques d'archivage par exemple c'est intéressant non? ^^

signaler à un administrateur
Commentaire de Morphinof le 10/07/2008 17:12:57

@Neigedhiver : "Ça pourrait être, à mon avis, une référence en matière de source d'email.", c'est clair je suis tout à fait d'accord ^^
Elle est tellement légère que c'est pour sa que me demandait si le coup d'ajouter la compression c'était pas l'alourdir pour rien.

signaler à un administrateur
Commentaire de neigedhiver le 10/07/2008 17:16:34

"Je ne l'ai pas précisé mais cette classe ne permet pas d'envoyer des documents avec des pièces jointes attachée au document"

Pas sûr d'avoir compris... Heureusement que la parenthèse qui suit m'éclaire...
Mais rassure moi... cette classe permet bien d'envoyer des pièces jointes, hein ?
Donc on peut attacher des images auxquelles ont fait référence dans le mail HTML non ?

Pour ce qui est de la compression, je pense que ça peut être bien, aussi...
La décision de compresser est à la discrétion de l'expéditeur... Si je veux envoyer plusieurs pièces jointes et que je veux les zipper, parce que c'est ce que j'ai convenu par téléphone avec le destinataire, ça peut être sympa.
Si en plus on peut mettre en pièce jointe un fichier distant, c'est encore plus super (c'est pas forcément intéressant pour un mailer comme Thunderbird, Outlook, etc, mais pour un mailer en ligne, ça permet d'envoyer des fichiers sans avoir besoin de les télécharger, les enregistrer, les ajouter...)
C'est pas que ces fonctionnalités sont indispensables, hein... Juste que de pouvoir le faire en cochant une simple case à cocher (au niveau du contrôleur), ça fait toujours plaisir...

signaler à un administrateur
Commentaire de codefalse le 10/07/2008 17:26:44 administrateur CS

@Neigedhiver : En fait si tu a un email en html avec quelque chose du genre <img src="banniere.jpg" alt="Entreprise" />. Cette classe n'ira pas chercher le fichier bannière.jpg, la compresser et faire en sorte que chez le destinataire, l'image s'affiche normalement à l'emplacement voulut dans l'html.
J'explique mieux la ? :p

Sinon biensur tu peux ajouter des pièces jointes sans soucis ! :)

Pour le fichier distant en pièce jointe, c'est possible si la configuration de php le permet (vu que je passe par is_readable et file_get_contents)

Pour la compression je peux utiliser Zip et ZLib, mais du coup il faudrait faire un truc de ce genre (à mon avis) :

class abstract Compression {}
class Zlib extends Compression {}
class Zip extends Compression {}

Puis rajouter une option 'Compress' dans la signature de la méthode addAttachment qui contient soit Zip (pour une compression zip), soit Zlib (pour une compression Zlib), soit rien pour aucune compression.

Ca peux etre possible en effet :)

signaler à un administrateur
Commentaire de neigedhiver le 10/07/2008 17:36:00

"En fait si tu a un email en html avec quelque chose du genre <img src="banniere.jpg" alt="Entreprise" />. Cette classe n'ira pas chercher le fichier bannière.jpg, la compresser et faire en sorte que chez le destinataire, l'image s'affiche normalement à l'emplacement voulut dans l'html."
Ce serait bien pourtant lol

Non mais ok, j'avais bien compris. Donc... si je joins une image à un mail, a priori, il doit être possible d'y faire référence dans le mail en HTML...

Pour la compression, yep... Et peut-être même une interface, pour la portabilité et la réutilisation.

Sinon, tu publies ça en GNU/GPL, mais tu précises pas la version... La V3 est plus secure... ;)

signaler à un administrateur
Commentaire de codefalse le 10/07/2008 20:04:07 administrateur CS

Pour ce qui est de la jointure de document liés au document html principal, le probleme c'est comment définir ou se trouve le repertoire qui contient le document en question ? pour src="image.jpg" ou se trouve image.jpg ?

Je peux éventuellement faire une variable sBasePath qui contient le repertoire de base et donc donc mon exemple, l'image serait à $sBasePath.'image.jpg';

Mais dans ce cas est-ce que $sBasePath s'applique aussi aux pièces jointes simples ?

Pour ce qui est de la compression, j'ai remarqué les librairies Zlib, Bz, Lzf et Zip qui peuvent permettre une compression. Maintenant si toutefois le serveur n'a pas la bibliothèque Zlib d'activée et que l'utilisateur veux du gz, est-ce que je lance une exception ou je ne la compresse pas ?

signaler à un administrateur
Commentaire de Morphinof le 10/07/2008 23:44:04

En fait tu te casse la tête pour rien :p Si l'utilisateur veut utiliser sa il met un lien absolu et basta ^^ Enfin moi ce que j'en dit :D Sinon si il veut du gz sans activer la librairie alors c'est un excellent exemple d'exception à lever ;) Dans la mesure ou la personne spécifie que la pièce doit être compressée alors il vaut mieux ne pas l'envoyer non compressée ;)

signaler à un administrateur
Commentaire de winwarrior le 11/07/2008 00:02:15

Salut,

Ligne 242, if (mail ('', '', '', $sHeaders) === false)  << il y a pas comme un oubli?

signaler à un administrateur
Commentaire de winwarrior le 11/07/2008 00:06:36

Au temps pour moi, mal lu, c'est vrai que ca fait bizarre d'envoyer un mail en utilisant que les headers (ca m'apprendra a ecrire trop vite..)

signaler à un administrateur
Commentaire de webdeb le 11/07/2008 00:41:49 10/10

Bravo c'est du bon code ;)

signaler à un administrateur
Commentaire de OriOn le 11/07/2008 09:05:26 administrateur CS

content de ne pas avoir à supprimer une source d'envoi de mail ;-)

signaler à un administrateur
Commentaire de codefalse le 11/07/2008 09:27:53 administrateur CS

@Winwarrior : j'ai commencé par remplir les champs un par un, puis je les ais supprimés petit à petit à force d'avancer dans le code

@Webdeb : Merci ! :)

@Orion : :p

@Morphinof : C'est pas con l'idée de mettre des liens absolus. Le problème qui se pose maintenant, c'est de bien choisir ce qui sera mis en pièce jointe ou non. Les images, ok, mais les css ? le js ? et les images dans le css ? etc ... :/
Pour l'histoire de l'exception, en effet tu a raison ! :p

signaler à un administrateur
Commentaire de Evangun le 13/07/2008 01:08:40

Excellent !
J'ai écumé phpcs et d'autres sites web il n'y a pas longtemps, sans trouver de source mail qui me plaise. Je m'étais résolu à me faire ma propre classe quand j'aurais le temps mais là tu m'as sauvé, merci :) J'aurai peut-être des commentaires quand j'aurai pu tester. à+

signaler à un administrateur
Commentaire de DijxDreaM le 14/07/2008 00:11:55

et Zend_Mail ? Ca fait un peu: "Je réinvente la roue" nan? lol. Mais en tout cas, j'ai testé et j'approuve xD !

signaler à un administrateur
Commentaire de codefalse le 14/07/2008 13:43:24 administrateur CS

Et Firefox ? ils réinvente la roue nan ? parce que il y avait déjà IE ! :p

Nan plus sérieusement, si tu veux implémenter un formulaire d'envoi de mail, tu va pas installer tout le zend fw rien que pour utiliser Zend_Mail :/ Et sinon Pear doit probablement faire déjà cela aussi, ainsi que bien d'autres.

Mais c'est en diversifiant les choses qu'on se rend compte qu'il y a toujours des amélirations possibles ! :p

En plus, qu'est-ce que tu veux incznrze ? ya déjà trop de choses qui existent ! :)

Après je sais, perso je suis plus du genre à réinventer la roue (regarde mes sources), mais comme je viens de le dire, je suis plus du genre à tenter d'améliorer la roue (ou tout du moin d'y ajouter des options intéressantes) que d'essayer d'inventer un truc qu'au final quelqu'un d'autre aura déjà fait :p

signaler à un administrateur
Commentaire de DijxDreaM le 14/07/2008 14:39:18

C'est clair que de toute manière personne ne pourra nous retirer le plaisir de programmer. Quand bien même notre code ne servirais à rien! C'est juste que souvent c'est assez frustrant de developper un belle appli pour finalement se rendre compte, qu'il éxiste déjà mieux et plus rapide loool !

signaler à un administrateur
Commentaire de codefalse le 15/07/2008 00:44:28 administrateur CS

C'est vrai que travailler à fond sur un truc et etre sur de faire quelque chose d'innovant, et se rendre compte trop tard que nan ... je crois que beaucoup d'entre nous connaissent ca ! :)

... et ouais ... j'aime coder ... :)

signaler à un administrateur
Commentaire de codefalse le 15/07/2008 20:15:07 administrateur CS

Voila une petite mise à jour :)
J'ai pris en compte vos commentaires.
Maintenant la classe supporte les mails en html avec les images, qui sont automatiquement incorporées dans le html lorsque ces images sont accessibles en lecture depuis le script.

La classe supporte aussi la compression des pièces jointes à la volée. J'ai pas fait quelque chose de complexe car la compression n'est pas le sujet ici.
J'ai donc fait une interface iCompression, que la méthode addAttachment prends en paramètre, et appele la méthode compress afin de compresser une chaine donnée dans la compression choisie.
J'ai ensuite fait trois classes BzCompression, GzCompression et LzfCompression, pour montrer comment cela marche. Elles ne sont absoluments pas poussée (3 méthodes ! :p) mais c'est volontaire, car là n'est pas le but. A vous ensuite d'implémenter vos propres classes de compression.

Alors ? Verdict ? :)

signaler à un administrateur
Commentaire de Morphinof le 18/07/2008 17:36:38

Voila tu as gagné j'ai plus rien à dire maintenant snif :D
Encore bravo pour cette source ! :)

signaler à un administrateur
Commentaire de codefalse le 18/07/2008 18:52:19 administrateur CS

Merci ^^ :)

signaler à un administrateur
Commentaire de codefalse le 31/07/2008 23:36:31 administrateur CS

Je me suis rendu compte que le code marchait pas chez ovh. Pire encore, ca fonctionnait pas en lecture sur les serveurs MS (exchange et Hotmail). C'est maintenant corrigé ! :)

signaler à un administrateur
Commentaire de codefalse le 01/08/2008 00:23:51 administrateur CS

Ajout du support des accents dans le sujet ! :)

Par contre je sais pas comment faire pour le support des accents dans les emails, si vous avez une idée ?

Si j'utilise la fonction quoted_printable_encode, ca va me fusiller tous les <>, espace et @, donc c'est pas bon !

Parce que pour le moment si quelqu'un met un truc du genre 'éléphant <elephantman@example.org>'. Le mail ne partira pas ... :/

signaler à un administrateur
Commentaire de clauded07 le 28/08/2008 20:53:06

salut et bon travail. cependant tester sur un dedie ovh, gentoo 2, ca marche pas.
:(

signaler à un administrateur
Commentaire de codefalse le 28/08/2008 22:43:24 administrateur CS

Mais la fonction mail envoie bien les mails sur ton serveur dédié (sans passer par ma source) ?

J'avais corrigé certains bugs à propos de OVH, mais ptete pas tous apparement.
J'attends des retours de ma question ?

signaler à un administrateur
Commentaire de clauded07 le 29/08/2008 09:03:34

oui les mails avec la fonction php [mail] passe bien.
avec ton code, j'ai fait des essais d'envoi simple, sans pieces jointes mais c'est pareil.
c'est le mystere! qmail est configurer de maniere classique. aucune trace dans les logs, aucune erreur généré.

signaler à un administrateur
Commentaire de codefalse le 29/08/2008 10:15:26 administrateur CS

c'est un probleme au niveau des headers que mon code ajoute, il doit y en avoir un que ovh n'aime pas. Je m'était déjà battu pour débugguer, et sur mon 60gp c'était passé ensuite. Peut-être que maintenant il y en à un autre ? (il est vrai que j'en met pas mal des headers !)

Si tu veux trouver le problème, je te conseil fortement de regarder de ce côté. Je te dit ca car je peux pas te promettre de corriger le code rapidement, en ce moment je fait des journées de 19 heures ... :p

Mais si tu ne trouve pas, je jeterai un oeil quand j'aurai du temps devant moi. Je le met sur la liste de mes tâches ;)

Merci pour la remontée !

signaler à un administrateur
Commentaire de clauded07 le 29/08/2008 10:37:29

J'ai recu les mail, impeccable! c'est qmail il a fait de la retention d'information! vraiement désolé, heureusement que t'es pas cardiaque!
Merci, super boulot !

signaler à un administrateur
Commentaire de codefalse le 29/08/2008 10:58:56 administrateur CS

lol pas de problemes ;)

Perso je préfère quand ca marche ;)

Bonne journée :)

signaler à un administrateur
Commentaire de clauded07 le 02/09/2008 16:46:37

Un probleme!!
Parfois, des caractères "espace" sont rajouté, en addbody(text/html).  quand ca tombe bien ca va. quand ca tombe a l'interieur des caratère spéciaux &xxxx; c'est pas cool ou en plein mot.

exemple avec cette phrase :
------
Ce courriel vous a été envoyé par un système automatique d'émission de messages. L'adresse d'émission n'est pas une adresse de courriel classique. Si vous écrivez à cette adresse votre message ne sera pas pris en compte. Si vous souhaitez nous envoyer un message, nous vous invitons à utiliser [la] rubrique NOUS CONTACTER se trouvant sur le site.
-------
insertion d'un blanc sur [la], mis entre crochet, au caractere N° 296 .
mystere

signaler à un administrateur
Commentaire de codefalse le 02/09/2008 17:10:07 administrateur CS

ca doit être la fonction chunk_split qui te découpe ta chaine. Par contre je ne vois pas trop comment y remédier ... !

signaler à un administrateur
Commentaire de clauded07 le 02/09/2008 18:27:26

en supprimant chunk_split, ca marche
tout en fesant attention de faire de temps en temps des retour a la ligne au bon endroit

signaler à un administrateur
Commentaire de codefalse le 02/09/2008 18:35:45 administrateur CS

En fait, je suis en train de me demander si je n'ai pas fait une mauvaise interprétation du manuel PHP :

"Scinde la chaîne body  en segments de chunklen  octets de longueur. Cette fonction est très pratique pour convertir les résultats de base64_encode() au format de la RFC 2045.".

Après relecture, il semblerai qu'elle soit utile après l'usage de la méthode base64_encode. Donc si on n'utilise pas cette méthode, on a pas besoin d'utiliser chunk_split. Or dans mon code je l'utilise quoiqu'il arrive.

Dites-moi ce que vous en pensez, et si j'ai effectivement fait une mauvaise interprétation, je corrigerai vite le code ! :)

signaler à un administrateur
Commentaire de gaele le 02/09/2008 20:21:38

Bonjour,
je suis complètement novice en php et j'aimerais savoir comment utiliser ce code.
merci

signaler à un administrateur
Commentaire de codefalse le 02/09/2008 20:47:13 administrateur CS

Le code présent sur cette page est un exemple, tu peux l'adapter à tes besoins.

signaler à un administrateur
Commentaire de gaele le 02/09/2008 21:01:16

ok mais ou dois-je le placer?

signaler à un administrateur
Commentaire de codefalse le 02/09/2008 21:51:25 administrateur CS

Dans le fichier qui recoit la réponse du formulaire d'envoi d'email. Ou si tu l'envoie sans passer par un formulaire, directement dans la page qui effectue le traitement.

signaler à un administrateur
Commentaire de gaele le 02/09/2008 22:22:35

je vais essayer.
merci

signaler à un administrateur
Commentaire de bug31 le 04/11/2008 15:16:15

Super il y a vraiment tout dessu mais j'ai un probleme, j'ai mon formullaire avec la fontion envoyer... et comment en ce sert de ta classe ?
PHP5 ?, j'ai essayer tes fichier seul comme ca rien ne ce passe !
Comment ca marche ? Merci

signaler à un administrateur
Commentaire de codefalse le 04/11/2008 15:37:23 administrateur CS

Tu as déjà fait de la soumission de formulaire ?
Il faut que tu récupère les valeurs données par le formulaire (en $_POST généralement mais sinon aussi en $_GET), et que tu remplace l'exemple fournit par les variables en rapport dans ton formulaire (mail, nom/prénom, message, etc).
Si toutefois tu ne comprends rien de ce que j'ai dit, demande de l'aide sur le forum, tu trouvera une réponse plus adaptée à ton problème

signaler à un administrateur
Commentaire de nico1214 le 06/11/2008 22:49:00 10/10

Bonjour,

J'avais le même problème que ClaudeD07 avec les espaces et en retirant chunk_split, ça fonctionne parfaitement.
Ceci dit, un grand bravo pour ce code et un grand merci !

signaler à un administrateur
Commentaire de bug31 le 07/11/2008 11:23:29

Merci codefalse j'avé la tete un peut ailleur suand jai regarder le script surment !

signaler à un administrateur
Commentaire de The_Pretender le 04/12/2008 20:49:54 4/10

Bonjour,

Après avoir testé votre script, j'ai plusieurs bugs :
- Le mail n'est pas envoyé entièrement en html, il manque un lien a href à ola fin du message.
- Dans la même classe, j'instancie la classe simplemail 2 fois pour avoir 2 objet mail différents. Le 2ème mail n'est jamais envoyé en entier, le première partie disparait toujours du mail.

est ce des bugs connus ou une limitation du script ?

Exemple de message envoyé (le message n'apparaît pas correctement car les balises html sont désactivées) : Les points accumulés avec le Quizz Trouve Ta Musique de notre partenaire vo us fait gagner le cadeau suivant :

Nom : Iphone
Descri ption : Iphone 3G débloqué tout réseau.

logo_Iphone

Nombre de points nécessaire : 4000 points.

Féli citation pour votre cadeau. Celui-ci vous sera envoyé dans les plus brefs d élais.
N'hésitez pas à vous inscrire à la Newsletter Quizz Trouve Ta Musique pour étre tenu informé des prochains Quizz organisés par nos partenaires.

signaler à un administrateur
Commentaire de codefalse le 04/12/2008 21:38:04 administrateur CS

Bonsoir :)

le fait qu'il manque un lien à la fin du mail est étrange, juste avant l'envoi de l'email, tu devrais faire un var_dump ($ton_objet); histoire de voir ce qu'il en est.

Pour ce qui est des multiples instances, je n'ai jamais essayé, mais je ne vois pas en quoi cela pourrai poser problème. Tu devrais peut-être essayer d'instancier une premiere fois, faire tout ton traitement, envoyer, supprimer (unset), et faire une nouvelle instance pour le second mail. Regarde ce que ca donne.

Enfin, pour le problème d'espace dans les mots, cela vient de la fonction chunck_split (ligne 152). Essaye en l'enlevant, ca devrait ptete mieux passer !

N'hésite pas à me dire ce qu'il en est, c'est grâce à ce genre de remarques que les problèmes ce corrigent.

signaler à un administrateur
Commentaire de The_Pretender le 04/12/2008 22:07:12

Merci pour votre réponse rapide.

J'ai trouvé d'où venait les problèmes.

- il faut pas utiliser plusieurs fois la méthode $oEmailAdmin->addBody(...) pour envoyer des messages mails longs. Sinon il ne sont pas envoyés en entier.
- le lien dans les mails doivent contenir une url complète, sinon il n'est pas affiché dans mozilla thunderbird.
exemple : <a href=\"http://www.example.com/newsletter/index.php\" title=\"Newsletter\">Newsletter</a>
- j'ai désativé chunck_split (ligne 152) dans le code.

Pour information, plusieurs intances fonctionnent très bien en tenant comptes des 2 remarques précédentes.

Féléicitation pour ton script propre et bien codé en php5. Merci beaucoup, cela m'a fait gagner du temps en m'évitant d'en développer un :)

signaler à un administrateur
Commentaire de codefalse le 04/12/2008 22:45:31 administrateur CS

c'est le but !

J'espère qu'il aide beaucoup tout en restant simple ! :)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Problème de compatibilité de script [ par Chris54 ] Bonjour,J'ai un problème d'execution d'un script javascript sous netscape alors qu'il fonctionne parfaitement sous IE mais je ne sais pas pourquoi.Que formulaire pour e-mail invisible [ par pyranhaz ] Bonjour,Je cherche à élaborer un formulaire php afin que les clients de mes petites annonces puissent envoyer leur réponse sans connaître le e-mail du imap append avec pièce jointe [ par raoulman ] Bonjour,Je développe un webmail en php, et j'ai un souci avec imap_append.Quand j'envoie un mail avec une pièce jointe, le mail est bien formaté et ar Mail et formulaire [ par Jackboy ] J'aimerai créer un formulaire, assez complexe (pas seulement email, nom, message,...) et j'aimerai avoir ce formulaire envoyer dans un email et format aidez moi pb avec email !! [ par anisbs ] Salut je suis débutant en phpje commence a essayer quelques trucs mais la fonction mail ne fonctionne pas Il me sort un truc comme :Warning: mail(): envoie d'Email :Je dois avoir de la merde dans les yeux [ par Wam0106 ] Voila chez Online.net il me dise qu'il y a une erreure a la ligne 3 mais je ne vois pas ou est le pb si qq'un peu me dire ce qui ne va pas:&lt;? $head Capter l'email une fois lu. [ par zzzzzz ] Salutj'aimerai savoir si il y a un moyen de "capter" l'email d'un destinataire. Si par exemple j'envoie un mail à bidon@hotmail.comj'aimerai appellé u envoi de mail avec fichier joint [ par cupidon2904 ] Bonjour je suis tres novice en php je voudrais savoir si quelqu'un pourrais me donner un exemple de "formulaire avec fichier joint" et m'expliquer son fonction mail ? [ par badjouane ] comment puis evité le "/" qui jalone les mail que j'envoi à partir de la section administration de mon site.Par exemple, si j'écri :Mes c'est quoi ce Envois de mail avec fichier joint [ par Titigre ] Coucou,Voilà je suis en train de faire une appli en php et à un moment je dois envoyer un mail avec un fichier joint (normalement le fichier joint ser


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,499 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.