Page 1 sur 1

Mail + temp file

Posté : 18 août 2011, 11:05
par Yosh
Bonjour à tous,

Je gère une application de gestion des salles de réunions en intranet, avec gestion des équipements, un workflow de validation, etc...

J'ai mis en place une nouvelle fonctionnalité qui permet de télécharger un fichier .ics (content-type: text/Calendar) afin d'ajouter la réunion dans son agenda Outlook personnel (avec un lien et ça fonctionne parfaitement). Par contre le fichier est généré à la volée et renvoyer au navigateur via les headers qui vont bien, donc aucun stockage physique.

Maintenant j'aimerais pouvoir attacher cette ressource à un mail (via phpmailer) lorsque mon workflow se déclenche (par exemple une salle à été attribué pour une réunion, un mail est envoyé à l'organisateur de la réunion pour l'en informer). Mais là problème, je n'arrive pas à attacher le "soit disant" fichier.

Bref, est-il possible d'envoyer par mail un fichier généré à la volée ? Ou faut-il obligatoirement stocker le fichier afin de l'envoyer ?

J'ai résolut le problème en mettant tous simplement un lien dans le body du mail, mais je trouve ça moyen, puisqu'on voit le navigateur par défaut s'ouvrir afficher une fenêtre de download, puis se referme une fois la fenêtre validée ou annulé.

Merci d'avance pour vos commentaires.

Re: Mail + temp file

Posté : 18 août 2011, 15:16
par Mazarini
Bonjour,

C'est possible avec certains utilitaires de mail. Par contre je n'ai pas trouver la liste des fonctions de PHPMAILER sur leur site.

Au pire il faut t'envoyer un mail avec pièce jointe et en regarder la source. Il y a une déclaration d'un séparateur. Le contenu du mail et la pièce jointe sont mis bout à bout. Si PHPMAILER ne le fait pas, trouve une autre solution car mail() sera pas plus compliquée à utiliser.

Dans l'entête :
Content-Type: multipart/mixed;
boundary="--NEXT_BM_06617AA126814004AC7399A43EB6C820"

En début de texte du mail :
This is a multipart message in MIME format.
----NEXT_BM_06617AA126814004AC7399A43EB6C820
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Entre le mail et la pièce jointe :

----NEXT_BM_06617AA126814004AC7399A43EB6C820
Content-Type: application/octet-stream; name="=?iso-8859-1?Q?log=5F20110818=5F060000=2Etxt?="
Content-Transfer-Encoding: base64
Content-Description: =?iso-8859-1?Q?log=5F20110818=5F060000=2Etxt?=
Content-Disposition: attachment; filename="=?iso-8859-1?Q?log=5F20110818=5F060000=2Etxt?="
Content-ID: <F7A0E199ABE3450AAC02DAD9B1750006>

A la fin de la pièce jointe :

----NEXT_BM_06617AA126814004AC7399A43EB6C820--

En espèrant que ca puisse t'aider.

Re: Mail + temp file

Posté : 18 août 2011, 15:37
par Yosh
Pas convaincu de ta réponse...

Et ça ne répond à mon besoin.

Re: Mail + temp file

Posté : 18 août 2011, 15:59
par Yosh
Problème résolut.

Il éxiste une méthode permettant d'ajouter une pièce-jointe automatiquement créé à partir d'une string.
AddStringAttachment($string, $filename, $encoding, $type)
$mailer->AddStringAttachment('ma chaine à encoder', 'test.ics', "base64", "text/Calendar");
Et ça roule.