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

Signaler
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
-
snoozer
Messages postés
1
Date d'inscription
mardi 10 septembre 2013
Statut
Membre
Dernière intervention
10 septembre 2013
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/47281-php5-simple-classe-d-envoi-d-email

snoozer
Messages postés
1
Date d'inscription
mardi 10 septembre 2013
Statut
Membre
Dernière intervention
10 septembre 2013

j'ai viré la function chunk_split comme conseillé plus haut.

La fonction qui nous met plein de caractere bizarre : quoted_printable_encode()

dans le construct :
$this->_aProperties['Date'] = date("r");

c'est mieux comme ca, ca retourne le bon fuseau horraire plutot que celui qui est sur -0600 .

dans la fonction send j'ai du rajouter une ligne :
$this->_aProperties['Bodies'] = array();

pour reinitialisé le body

autrement si on veut envoyer 2 mail a la suite dans la meme instance, on récupéré le premier body dans le 2 ieme mail, meme en utilisant addBody (qui est censé le rajouté)

et j'ai pas trop fouiller...
JMarcBoutaud
Messages postés
1
Date d'inscription
dimanche 5 février 2012
Statut
Membre
Dernière intervention
5 février 2012

Ca paraît génial de simplicité effectivement, merci beaucoup de mettre à disposition ce très beau travail. Par contre, quand je fais le test avec l'exemple fourni : l'email envoyé va direct dans la boîte "Junk EMail" du destinataire...

Il y a moyen d'éviter ça ?
bentom32390
Messages postés
25
Date d'inscription
mercredi 28 novembre 2007
Statut
Membre
Dernière intervention
21 février 2009

je vient de teste ta source marche bien
mais juste que les lien ne affiche pas comme lien
testabc
Messages postés
33
Date d'inscription
jeudi 17 juillet 2008
Statut
Membre
Dernière intervention
23 juillet 2014

Testé sur ovh, ça ne fonctionne pas.
j'ai fais le test sans pièce jointe, le mail part bien, mais n'arrive jamais...

Peut-être une petite mise a jour de codefalse serait la bienvenue...
cink4webmister
Messages postés
1
Date d'inscription
vendredi 3 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011

Bonjour,
Cette source est excelente mais je retrouve le même soucis sur les pièces jointes, le fichier est non lisible.
Quelqu'un aurait-il une solution ?
Merci
hungawa
Messages postés
1
Date d'inscription
jeudi 9 décembre 2004
Statut
Membre
Dernière intervention
29 novembre 2010

Bonjour,

Merci pour cette excellente source.

J'ai un petit soucis, lorsque je joints une pièce jointe (pdf, image) la taille d'arrivée du fichier est de 0 et ne peut donc être lu. Avez-vous une idée afin de résoudre ce problème svp ?
neigedhiver
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
15
Propositions :

SimpleMail.php Ligne 72 :
if (NULL !== ($aProperties) && is_array($aProperties)) {

SimpleMail.php Méthode __set($sKey, $mValue) :
public function __set ($sKey, $mValue) {
if (gettype($this->_aProperties[$sKey]) != gettype($mValue))
throw new Exception ('Invalid type, must be '.gettype($this->_aProperties[$sKey]);
else
$this->_aProperties[$sKey] = $mValue;
}

J'ai pas regardé plus en profondeur pour le moment :)
NeoMansLand
Messages postés
1
Date d'inscription
vendredi 3 septembre 2010
Statut
Membre
Dernière intervention
3 septembre 2010

Bonjour à tous, et merci beaucoup pour cette source =)

j'ai utilisé ton script pour m'envoyer par mail le résultat d'un formulaire. Le visiteur remplit plusieurs champs, il a la possibilité de laisser une pièce jointe, et lorsqu'il valide son formulaire, je reçois un mail avec ce qu'il a rempli.

J'ai cependant deux problèmes :

- si l'on joint un fichier, il me balance l'erreur suivante : The file "MonFichier.pdf" is unreadable. J'ai pourtant la ligne qui correspond pour les pdf :
$oEmail->addAttachment ($_FILES['r_file']['name'], MimeType::get ('pdf'));

- le problème de la pièce jointe mise à part, dans la mise en page de mon mail, j'ai des retours à la ligne aléatoires... any idea why ?
code :
$sMessage_env='Nom: '.$_POST['r_nom'].'
'.
'Prenom: '.$_POST['r_prenom'].'
'.
'Societe: '.$_POST['r_fonction'].'
'.
'Adresse1: '.$_POST['r_adresse1'].'
'.
'Adresse2: '.$_POST['r_adresse2'].'
'.
'CP: '.$_POST['r_c_postal'].'
'.
'Ville: '.$_POST['r_ville'].'
'.
'Pays: '.$_POST['r_pays'].'
'.
'Tel: '.$_POST['r_tel'].'
'.
'Mail: '.$_POST['r_email'].'
'.
'Message: '.'
'.$_POST['r_message'].'
';

$oEmail->addBody ($sMessage_env, 'text/html');
cs_lkaiman
Messages postés
16
Date d'inscription
jeudi 19 janvier 2006
Statut
Membre
Dernière intervention
6 février 2010

Merci pour ce code,

et me voila avec un autre module tout fais à utiliser comme je veux ;)

Have fun
jayprisme
Messages postés
1
Date d'inscription
jeudi 8 octobre 2009
Statut
Membre
Dernière intervention
4 décembre 2009

outre les espaces ajoutés déjà discutés ici, j'ai un problème d'encodage :
si mon texte est en utf8 il est mal interprété

et j'ai un caractère " ! " qui est inséré sans raison ...

je switch sur php mailer
brosto
Messages postés
2
Date d'inscription
jeudi 28 juillet 2005
Statut
Membre
Dernière intervention
1 octobre 2009

A oui pardon...
dommage aussi que le code génère une erreur si le mime d'une pièce jointe est introivable au lieu de mettre un mime par defaut. par exemple le swf n'est pas reconnu, donc envoi pas possible...

je me suis permis de le reprendre comme ça. je ne sais pas si c'est le top, mais ça marche :
public static function geti($sKey) {
$sExtension = $sKey;

if (strpos ($sKey, '.') !== false)
$sExtension = substr ($sKey, strrpos ($sKey, '.') + 1);

if (!isset (self::$_aType[$sExtension]))
return "application/octet-stream";
return self::$_aType[$sExtension];
}
brosto
Messages postés
2
Date d'inscription
jeudi 28 juillet 2005
Statut
Membre
Dernière intervention
1 octobre 2009

Salut,

juste un petit truc... quand même. soit je suisa veugle, soit je ne trouve pas la fonction getMessage() qui est applelée en ligne 25 de index.php. donc ça fait une erreur fatale.

de plus, si elle sert à ce que je pense, elle serait bien utile pour faire un "imap_append" après que l'envoi ai été bien fait. une solution ?

merci quand même, bon code.
crahier
Messages postés
54
Date d'inscription
dimanche 22 septembre 2002
Statut
Membre
Dernière intervention
22 avril 2011

Merci pour ce code !
codefalse
Messages postés
1127
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
c'est le but !

J'espère qu'il aide beaucoup tout en restant simple ! :)
cs_The_Pretender
Messages postés
60
Date d'inscription
lundi 11 juillet 2005
Statut
Membre
Dernière intervention
18 janvier 2011

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 : Newsletter
- 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 :)
codefalse
Messages postés
1127
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
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.
cs_The_Pretender
Messages postés
60
Date d'inscription
lundi 11 juillet 2005
Statut
Membre
Dernière intervention
18 janvier 2011

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.
cs_bug31
Messages postés
9
Date d'inscription
vendredi 19 janvier 2007
Statut
Membre
Dernière intervention
13 août 2011

Merci codefalse j'avé la tete un peut ailleur suand jai regarder le script surment !
nico1214
Messages postés
37
Date d'inscription
mardi 17 juin 2003
Statut
Membre
Dernière intervention
6 mai 2009

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 !
codefalse
Messages postés
1127
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
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
cs_bug31
Messages postés
9
Date d'inscription
vendredi 19 janvier 2007
Statut
Membre
Dernière intervention
13 août 2011

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
cs_gaele
Messages postés
3
Date d'inscription
mardi 2 septembre 2008
Statut
Membre
Dernière intervention
2 septembre 2008

je vais essayer.
merci
codefalse
Messages postés
1127
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
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.
cs_gaele
Messages postés
3
Date d'inscription
mardi 2 septembre 2008
Statut
Membre
Dernière intervention
2 septembre 2008

ok mais ou dois-je le placer?
codefalse
Messages postés
1127
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
Le code présent sur cette page est un exemple, tu peux l'adapter à tes besoins.
cs_gaele
Messages postés
3
Date d'inscription
mardi 2 septembre 2008
Statut
Membre
Dernière intervention
2 septembre 2008

Bonjour,
je suis complètement novice en php et j'aimerais savoir comment utiliser ce code.
merci
codefalse
Messages postés
1127
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
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 ! :)
cs_clauded07
Messages postés
5
Date d'inscription
samedi 12 février 2005
Statut
Membre
Dernière intervention
2 septembre 2008

en supprimant chunk_split, ca marche
tout en fesant attention de faire de temps en temps des retour a la ligne au bon endroit
codefalse
Messages postés
1127
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
ca doit être la fonction chunk_split qui te découpe ta chaine. Par contre je ne vois pas trop comment y remédier ... !
cs_clauded07
Messages postés
5
Date d'inscription
samedi 12 février 2005
Statut
Membre
Dernière intervention
2 septembre 2008

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
codefalse
Messages postés
1127
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
lol pas de problemes ;)

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

Bonne journée :)
cs_clauded07
Messages postés
5
Date d'inscription
samedi 12 février 2005
Statut
Membre
Dernière intervention
2 septembre 2008

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 !
codefalse
Messages postés
1127
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
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 !
cs_clauded07
Messages postés
5
Date d'inscription
samedi 12 février 2005
Statut
Membre
Dernière intervention
2 septembre 2008

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é.
codefalse
Messages postés
1127
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
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 ?
cs_clauded07
Messages postés
5
Date d'inscription
samedi 12 février 2005
Statut
Membre
Dernière intervention
2 septembre 2008

salut et bon travail. cependant tester sur un dedie ovh, gentoo 2, ca marche pas.
:(
codefalse
Messages postés
1127
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
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 ... :/
codefalse
Messages postés
1127
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
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é ! :)
codefalse
Messages postés
1127
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
Merci ^^ :)
Morphinof
Messages postés
261
Date d'inscription
vendredi 20 avril 2007
Statut
Membre
Dernière intervention
9 août 2013
3
Voila tu as gagné j'ai plus rien à dire maintenant snif :D
Encore bravo pour cette source ! :)
codefalse
Messages postés
1127
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
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 ? :)
codefalse
Messages postés
1127
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
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 ... :)
DijxDreaM
Messages postés
4
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
14 juillet 2008

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 !
codefalse
Messages postés
1127
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
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
DijxDreaM
Messages postés
4
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
14 juillet 2008

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 !
Evangun
Messages postés
1980
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
24 septembre 2012
5
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. à+
codefalse
Messages postés
1127
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
@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
cs_OriOn
Messages postés
822
Date d'inscription
vendredi 25 mai 2001
Statut
Modérateur
Dernière intervention
1 août 2014

content de ne pas avoir à supprimer une source d'envoi de mail ;-)
webdeb
Messages postés
488
Date d'inscription
samedi 5 avril 2003
Statut
Membre
Dernière intervention
31 mars 2009
3
Bravo c'est du bon code ;)
winwarrior
Messages postés
654
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
10 février 2009
1
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..)
winwarrior
Messages postés
654
Date d'inscription
jeudi 3 avril 2003
Statut
Membre
Dernière intervention
10 février 2009
1
Salut,

Ligne 242, if (mail ('', '', '', $sHeaders) === false) << il y a pas comme un oubli?
Morphinof
Messages postés
261
Date d'inscription
vendredi 20 avril 2007
Statut
Membre
Dernière intervention
9 août 2013
3
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 ;)
codefalse
Messages postés
1127
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
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 ?
neigedhiver
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
15
"En fait si tu a un email en html avec quelque chose du genre . 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... ;)
codefalse
Messages postés
1127
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
@Neigedhiver : En fait si tu a un email en html avec quelque chose du genre . 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 :)
neigedhiver
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
15
"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...
Morphinof
Messages postés
261
Date d'inscription
vendredi 20 avril 2007
Statut
Membre
Dernière intervention
9 août 2013
3
@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.
Morphinof
Messages postés
261
Date d'inscription
vendredi 20 avril 2007
Statut
Membre
Dernière intervention
9 août 2013
3
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? ^^
neigedhiver
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
15
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...
codefalse
Messages postés
1127
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
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 ?
Morphinof
Messages postés
261
Date d'inscription
vendredi 20 avril 2007
Statut
Membre
Dernière intervention
9 août 2013
3
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 ^^
codefalse
Messages postés
1127
Date d'inscription
mardi 8 janvier 2002
Statut
Modérateur
Dernière intervention
21 avril 2009
1
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 ! :)
neigedhiver
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
15
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é !