GNT sans publicité, site mobile, fonctionnalitées exclusives...

Besoin d'aide pour envoyer un mail via Perl

Le
Sébastien
Bonjour tout le monde,

Je n'y connais pas grand chose en Perl et j'ai écris un petit script
qui doit selectionner des enregistrements dans une table suivant un
critère, envoyer le resultat dans un mail à une ou plusieurs
personnes puis indiquer que les enregistrements ont été traités.

Voici mon script :
#usr/bin/perl
use Mail::Sender;
use DBI;

$base = "ma base";
$login = "mon login";
$pass = "mon pot de passe";

# on se connecte a la base
$dbh = DBI->connect("DBI:mysql:$base",$login,$pass) || die "erreur
connection" ;

# on selectionne les nouvelles blagues
$req = "SELECT DATE_BLAGUE, NOTE_BLAGUE, TITRE_BLAGUE, FICHIER_BLAGUE
FROM BLAGUE WHERE MAIL LIKE 'N';";
$req = $dbh->prepare ("$req");
$req->execute || die "erreur execution requete";

# on constitue le mail
$message = new Mail::Sender { smtp =>'smtp.wanadoo.fr', from
=>'monadesse@wanadoo.fr'};
$message -> Open ({to => 'autresadesses@wanadoo.fr' , subject => 'Mail
automatique'});
while (@result=$req->fetchrow_array){
foreach(@result){
$message -> SendLine("$_ ");
}
}
$message -> Close;
$req->finish;

# on indique que les nouvelles blagues ont ete traitees
$req = "UPDATE BLAGUE SET MAIL = 'O' WHERE MAIL LIKE 'N';";
$req = $dbh->prepare ("$req");
$req->execute || die "erreur execution requete";
$req->finish;

# on se deconnecte a la base
$dbh->disconnect;

Il marche correctement et mon script envoie le mail suivant :
2006-05-05
1
Fermeture du bar
0605/fermeturebar.mpeg
2006-05-05
1
Trop de vent ?
0605/13.jpg
2006-05-05
1
Des chutes..
0605/chutes.wmv

J'aimerais obtenir dans un premier temps ceci :
2006-05-05 1 Fermeture du bar 0605/fermeturebar.mpeg
2006-05-05 1Trop de vent ? 0605/13.jpg
2006-05-05 1 Des chutes.. 0605/chutes.wmv

Puis j'aimerais ajouter une adresse web au dernier champ et un
commentaire au second , pour avoir :
2006-05-05 Note : 1 Fermeture du bar
http://monadresseweb/0605/fermeturebar.mpeg
2006-05-05 Note : 1Trop de vent ? http://monadresseweb/0605/13.jpg
2006-05-05 Note : 1 Des chutes.. http://monadresseweb/0605/chutes.wmv

Si en plus les champs pouvaient être alignés ce serait le top :
2006-05-05 Note : 1 Fermeture du bar
http://monadresseweb/0605/fermeturebar.mpeg
2006-05-05 Note : 1 Trop de vent ?
http://monadresseweb/0605/13.jpg
2006-05-05 Note : 1 Des chutes..
http://monadresseweb/0605/chutes.wmv

Par avance merci.

Sébastien
Lire les 7 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Sébastien Cottalorda
Le #114053
Bonjour tout le monde,


Salut,

Je n'y connais pas grand chose en Perl et j'ai écris un petit script
qui doit selectionner des enregistrements dans une table suivant un
critère, envoyer le resultat dans un mail à une ou plusieurs
personnes puis indiquer que les enregistrements ont été traités.

Voici mon script :
#usr/bin/perl
use Mail::Sender;
use DBI;

$base = "ma base";
$login = "mon login";
$pass = "mon pot de passe";

# on se connecte a la base
$dbh = DBI->connect("DBI:mysql:$base",$login,$pass) || die "erreur
connection" ;

# on selectionne les nouvelles blagues
$req = "SELECT DATE_BLAGUE, NOTE_BLAGUE, TITRE_BLAGUE, FICHIER_BLAGUE
FROM BLAGUE WHERE MAIL LIKE 'N';";
$req = $dbh->prepare ("$req");
$req->execute || die "erreur execution requete";

# on constitue le mail
$message = new Mail::Sender { smtp =>'smtp.wanadoo.fr', from
=>''};
$message -> Open ({to => '' , subject => 'Mail
automatique'});
while (@result=$req->fetchrow_array){


Remplace ce bloc ==>
foreach(@result){
$message -> SendLine("$_ ");
}
par $message -> SendLine("@result");


}
$message -> Close;
$req->finish;


J'espère que cela t'aidera.

Sébastien

Sébastien
Le #114052
Bonjour,

Merci pour ton aide.
J'ai déjà tenté cette modification hier au soir.
Cela m'a permis d'obtenir quelque chose comme :

2006-05-05 1 Fermeture du bar 0605/fermeturebar.mpeg
2006-05-05 1Trop de vent ? 0605/13.jpg
2006-05-05 1 Des chutes.. 0605/chutes.wmv

Ce qui répond à ma première modification.
Toutefois, j'aimerais aussi ajouter du "texte" sur ma réponse pour
obtenir :

2006-05-05 Note : 1 Fermeture du bar
http://monadresseweb/0605/fermeturebar.mpeg
2006-05-05 Note : 1 Trop de vent ?
http://monadresseweb/0605/13.jpg
2006-05-05 Note : 1 Des chutes..
http://monadresseweb/0605/chutes.wmv

(ajout de "Note :" et de "http://monadresseweb/" ).
Comment dois je faire ?

Par avance merci.

Sébastien
Sébastien Cottalorda
Le #114051
Bonjour,

Merci pour ton aide.
J'ai déjà tenté cette modification hier au soir.
Cela m'a permis d'obtenir quelque chose comme :

2006-05-05 1 Fermeture du bar 0605/fermeturebar.mpeg
2006-05-05 1Trop de vent ? 0605/13.jpg
2006-05-05 1 Des chutes.. 0605/chutes.wmv

Ce qui répond à ma première modification.
Toutefois, j'aimerais aussi ajouter du "texte" sur ma réponse pour
obtenir :

2006-05-05 Note : 1 Fermeture du bar
http://monadresseweb/0605/fermeturebar.mpeg
2006-05-05 Note : 1 Trop de vent ?
http://monadresseweb/0605/13.jpg
2006-05-05 Note : 1 Des chutes..
http://monadresseweb/0605/chutes.wmv


Salut,

tu peux faire comme ceci:
ATTENTION, cela suppose que le fichier est toujours à la position n°3
dans la requête SQL


#usr/bin/perl
use Mail::Sender;
use DBI;

$base = "ma base";
$login = "mon login";
$pass = "mon pot de passe";

# on se connecte a la base
$dbh = DBI->connect("DBI:mysql:$base",$login,$pass) || die "erreur
connection" ;

# on selectionne les nouvelles blagues
$req = "SELECT DATE_BLAGUE, NOTE_BLAGUE, TITRE_BLAGUE, FICHIER_BLAGUE
FROM BLAGUE WHERE MAIL LIKE 'N';";
$req = $dbh->prepare ("$req");
$req->execute || die "erreur execution requete";

# on constitue le mail
$message = new Mail::Sender { smtp =>'smtp.wanadoo.fr', from
=>''};
$message -> Open ({to => '' , subject => 'Mail
automatique'});
while (@result=$req->fetchrow_array){
#########################################################
# Ajou de http://monadresseweb/ devant le nom du fichier
#########################################################
$result[3] = 'http://monadresseweb/'.$result[3];
$message -> SendLine("@result");
}
$message -> Close;
$req->finish;

# on indique que les nouvelles blagues ont ete traitees
$req = "UPDATE BLAGUE SET MAIL = 'O' WHERE MAIL LIKE 'N';";
$req = $dbh->prepare ("$req");
$req->execute || die "erreur execution requete";
$req->finish;

# on se deconnecte a la base
$dbh->disconnect;


REMARQUE: A ta place, je n'utiliserai pas LIKE dans la requête SQL, mais
plutôt "=", en effet, il me semble que LIKE est plus gourmand en ressources

Sébastien

Sébastien
Le #114050
Ok, j'ai modifié mon script pour avoir :
while (@result=$req->fetchrow_array){
$result[0] = $result[0].' ';
$result[1] = ' Note : '.$result[1].' ';
$result[2] = $result[2].' ';
$result[3] = 'http://sdrouard.dyndns.org/'.$result[3].' ';;
$message -> SendLine("@result");
}

Ce qui me donne en résultat :
2006-05-05 Note : 1 Fermeture du bar
http://monadresseweb/0605/fermeturebar.mpeg
2006-05-05 Note : 1 Trop de vent ?
http://monadresseweb/0605/13.jpg
2006-05-05 Note : 1 Des chutes..
http://monadresseweb/0605/chutes.wmv
2006-05-08 Note : 1 On danse ?
http://monadresseweb/0605/Pinguindance.wmv
2006-05-08 Note : 2 Toto
http://monadresseweb/0605/toto.pps
2006-05-08 Note : 1 Pub
http://monadresseweb/0605/Whyshaveclose.wmv
2006-05-09 Note : 2 La ceinture
http://monadresseweb/0605/ceinture.pps
2006-05-09 Note : 2 Berlusconi
http://monadresseweb/0605/Berlusconi.wmv
2006-05-09 Note : 1 Mobylette
http://monadresseweb/0605/Mobylette.mpg
2006-05-09 Note : 0 Régis
http://monadresseweb/0605/regis.zip
2006-05-09 Note : 0 Bonjour les petits nenfants
http://monadresseweb/0605/jackass_enfants.zip

Y a t'il un moyen pour que le champ titre (le 3) fasse toujours 35
caractères de long ?
Par avance merci.

Encore merci a toutes les personnes qui m'aident

Sébastien
Sébastien
Le #114049
Ok, j'ai modifié le while de manière à avoir :

while (@result=$req->fetchrow_array){
$result[0] = $result[0].' ';
$result[1] = ' Note : '.$result[1].' ';
$result[2] = $result[2].' ';
$result[3] = 'http://monsiteweb/'.$result[3].' ';;
$message -> SendLine("@result");
}

Ce qui me donne en résultat :
2006-05-05 Note : 1 Fermeture du bar
http://monsiteweb/0605/fermeturebar.mpeg
2006-05-05 Note : 1 Trop de vent ?
http://monsiteweb/0605/13.jpg
2006-05-05 Note : 1 Des chutes..
http://monsiteweb/0605/chutes.wmv
2006-05-08 Note : 1 On danse ?
http://monsiteweb/0605/Pinguindance.wmv
2006-05-08 Note : 2 Toto
http://monsiteweb/0605/toto.pps
2006-05-08 Note : 1 Pub
http://monsiteweb/0605/Whyshaveclose.wmv
2006-05-09 Note : 2 La ceinture
http://monsiteweb/0605/ceinture.pps
2006-05-09 Note : 2 Berlusconi
http://monsiteweb/0605/Berlusconi.wmv
2006-05-09 Note : 1 Mobylette
http://monsiteweb/0605/Mobylette.mpg
2006-05-09 Note : 0 Régis
http://monsiteweb/0605/regis.zip
2006-05-09 Note : 0 Bonjour les petits nenfants
http://monsiteweb/0605/jackass_enfants.zip

J'aimerais que le champ titre fasse toujours 35 caractères de long.
Comment dois je faire ?

Encore merci à toutes les personnes qui m'aident.

Sébastien
Publicité
Suivre les réponses
Poster une réponse
Anonyme