MIME::Lite Comment attacher plusieurs fichiers dans un mail? [Résolu] - Perl - Programmation
Marsh Posté le 27-09-2011 à 11:12:17
Pour que use strict passe, il faut déclarer les variables comme locales avec my
Code :
|
Pour les attachements multiples, ça devrait marcher, mais il faut sans doute ajouter
Type => 'multipart/mixed'
dans ton appel à MIME::Lite->new
A+,
Marsh Posté le 27-09-2011 à 11:47:09
Bonjour Gilou,
En déclarant les variables en locale avec my j'ai maintenant cette erreur qui apparaît:
Code :
|
Quand j'ajoute : Type => 'multipart/mixed'
Les mails envoyés ne contiennent plus le corps de ma variable $Message
J'ai toujours un fichier joint mais je n'arrive pas à en envoyer plusieurs.
Marsh Posté le 27-09-2011 à 12:44:15
Citation : En déclarant les variables en locale avec my j'ai maintenant cette erreur qui apparaît: |
Chez moi, ça marche (le code donné en exemple avec mon post)
Si vous postez pas votre code, je peux pas savoir ce qu'il y a ligne 34 et avant.
Citation : Les mails envoyés ne contiennent plus le corps de ma variable $Message |
Ca devrait.
Essayez de faire:
$msg->attach( Type =>'TEXT',
Data => $Message);
Citation : J'ai toujours un fichier joint mais je n'arrive pas à en envoyer plusieurs. |
Il y a pas de raison, ça devrait marcher.
Vous avez essayé d'en ajouter deux pour voir?
$msg->attach(Type => "text/plain",
Path => $File1,
Filename => $File1,
Disposition => "attachment"
) or die "Error adding the text message part: $!\n";
$msg->attach(Type => "text/plain",
Path => $File2,
Filename => $File2,
Disposition => "attachment"
) or die "Error adding the text message part: $!\n";
A+,
Marsh Posté le 27-09-2011 à 18:49:29
Bonjour Gilou,
La ligne 34 c'est celle là, ces celles du script que j'ai posté à 2-3 lignes prêts car j'en ai commenté certaines.
local ($To, $From, $Cc, $Subject, $Message, $File) = @_;
Sinon en ajoutant un second attachement avec $File2 cela fonctionne.
Mais comment je fais pour ajouter des fichiers joints d'une liste dont je ne connais pas encore à l'avance le nombre?
Marsh Posté le 27-09-2011 à 21:35:10
Ca c'est facile, tu mets les noms de fichier (ou path? bref ce que tu let dans ta variable $File) dans un array (avec un push ou autre), et tu fais une boucle
foreach my $file (@filelist) {
$msg->attach(Type => "text/plain",
Path => $file,
Filename => $file,
Disposition => "attachment"
) or die "Error adding the text message part: $!\n";
}
Bon, si c'est des attachements de type différent, il vaudra mieux que tu fasses un array de hashes, avec pour clés de tes hashes Type, Path, Filename, etc.
Citation : La ligne 34 c'est celle là, ces celles du script que j'ai posté à 2-3 lignes prêts car j'en ai commenté certaines. |
Oui, mais elle est comme ça chez toi? ou tu as rajouté des my dans cette ligne? (il faut pas, puisque my et local sont deux indications de même niveau et donc incompatibles)
Si tu a pas rajouté de my, le pb vient d'ailleurs (ce pour quoi il faudrait que je voie le code), car chez moi ça marche.
De toute façon, tu peux remplacer ce local ($To, ...) par un my ($To, ...), ça ne devrait rien changer et ce serait mieux.
A+,
Marsh Posté le 27-09-2011 à 23:06:32
Impeccable !
Merci Gilou tu as résolu mon problème.
Une dernière chose, qui est plus un problème d'environnement qu'autre chose j'imagine.
J'utilise cygwin avec mintty 0.9.2
J'ai perl, v5.10.1
Via cygwin j'ai une crontab qui fonctionne depuis des lustres et j'ai des scripts qui tournent.
Cependant, quand j'ajoute mon script ci-dessus pour l'envoi de mail et bien rien ne se passe, aucun mail n'est envoyé.
Je ne sais même pas si la cron a tourné ou non pour ce script.
D'où pourrait bien venir le problème?
Voici mon crontab:
Code :
|
Le script que je veux faire tourner est : gmail.pl
Voici ce script:
Code :
|
Marsh Posté le 28-09-2011 à 00:02:16
Citation : Via cygwin j'ai une crontab qui fonctionne depuis des lustres et j'ai des scripts qui tournent. |
La ce n'est plus un problème perl, alors je ne peux te répondre, je n'ai jamais aimé cygwin, et ne l'ai plus sur ma machine depuis un bail.
A+,
Marsh Posté le 28-09-2011 à 10:19:41
Ok Gilou,
T'en fais pas c'est réglé après un restart de la crontab
Bizarre m'enfin bon.
Merci pour ton aide précieuse sur les questions Perl,
Sympas de prendre du temps pour nous les 'tits novice
Marsh Posté le 27-09-2011 à 09:33:22
Bonjour,
Le script ci-dessous fonctionne.
Le but étant d'envoyer un mail avec une pièce jointe.
Le soucis que j'ai, est que tant bien même j'essaye d'y inclure un foreach pour envoyer plusieurs fichiers, je n'y arrive pas.
Comment modifier ce script pour envoyer plusieurs fichiers joints?
Deuxième chose, je voudrais le faire fonctionner avec le "use strict" mais je n'y arrive pas non plus.
Merci d'avance.
Message édité par Sethenssen le 27-09-2011 à 23:06:53