POD2-FR
view release on metacpan or search on metacpan
FR/perlfaq9.pod view on Meta::CPAN
n'est donc pas conseillé. À la place, regardez plutôt
L<http://www.cpan.org/authors/Tom_Christiansen/scripts/ckaddr.gz> qui
effectivement vérifie une compatibilité complète avec les
spécifications RFC (excepté les commentaires imbriqués), vérifie qu'il
ne s'agit pas d'une adresse que vous ne désirez pas (cad, Bill Clinton
ou votre responsable de compte mail), puis s'assure que le nom d'hôte
donné peut être trouvé dans les enregistrements MX du DNS. Ce n'est
pas très rapide, mais ça marche pour ce que ça essaye de faire.
Notre meilleur conseil pour vérifier l'adresse de quelqu'un est de lui
faire entrer deux fois son adresse, tout comme vous le faites pour
changer un mot de passe. Ceci élimine habituellement les fautes de
frappe. Si les deux versions sont égales, envoyez un courrier à cette
adresse avec un message personnel ayant cette allureE<nbsp>:
Dear someuser@host.com,
Please confirm the mail address you gave us Wed May 6 09:38:41
MDT 1998 by replying to this message. Include the string
"Rumpelstiltskin" in that reply, but spelled in reverse; that is,
start with "Nik...". Once this is done, your confirmed address will
be entered into our records.
Si vous recevez le message et s'ils ont suivi vos indications, vous
pouvez être raisonnablement assuré que l'adresse est réelle.
Une stratégie proche moins ouverte à la tromperie est de leur donner
un PIN (numéro d'identification personnel). Enregistrez l'adresse et
le PIN (le mieux est qu'il soit aléatoire) pour un traitement
ultérieur. Dans le message que vous envoyez, demandez-leur d'inclure
le PIN dans leur réponse. Mais si le message rebondit, ou est inclus
automatiquement par un script "vacation" (en vacances), il sera là de
toute façon. Il est donc plus efficace de leur demander de renvoyer un
PIN légèrement modifié, par exemple inversé, ou une unité ajoutée à
chaque chiffre, etc.
=head2 Comment décoder une chaîne MIME/BASE64E<nbsp>?
Le module MIME::Base64 (disponible sur CPAN) gère cela ainsi que
l'encodage MIME/QP. Décoder du BASE64 devient alors aussi simple S<que
:>
use MIME::Base64;
$decoded = decode_base64($encoded);
Le paquetage MIME-tools (disponible sur CPAN) propose ces extractions
avec en sus le décodage des documents attachés encodés en BASE64, tout
cela directement depuis un message e-mail.
Si la chaîne à décoder est courte (moins de 84 caractères), une
approche plus directe consiste à utiliser la fonction unpack() avec le
formatage "u" après quelques translations mineuresE<nbsp>:
tr#A-Za-z0-9+/##cd; # supprime les caractères non base-64
tr#A-Za-z0-9+/# -_#; # convertit dans le format uuencode
$len = pack("c", 32 + 0.75*length); # calcule la longueur en octets
print unpack("u", $len . $_); # uudécode et affiche
=head2 Comment renvoyer l'adresse électronique de l'utilisateurE<nbsp>?
Sur les systèmes supportant getpwuid, et donc la variable $<, ainsi
que le module Sys::Hostname (qui fait partie de la distribution
standard de Perl), vous pouvez probablement essayer d'utiliser quelque
chose comme ceciE<nbsp>:
use Sys::Hostname;
$address = sprintf('%s@%s', getpwuid($<), hostname);
La politique de la compagnie sur les adresses email peut signifier
que ceci génère des adresses que le système de mail de la compagnie
n'acceptera pas, ainsi vous devriez demander les adresses email des
utilisateurs quand ceci compte. Qui plus est, tous les systèmes sur
lesquels fonctionne Perl n'acceptent pas ces informations comme sur
Unix.
Le module Mail::Util du CPAN (faisant partie du package MailTools)
procure une fonction mailaddress() qui essaye de créer l'adresse email
d'un utilisateur. Il effectue une démarche plus intelligente que le
code précédent, utilisant des informations fournies quand le module a
été installé, mais cela peut rester incorrect. Encore une fois, la
meilleure manière est souvent de simplement poser la question à
l'utilisateur.
=head2 Comment envoyer un mailE<nbsp>?
Utilisez directement le programme C<sendmail>E<nbsp>:
open(SENDMAIL, "|/usr/lib/sendmail -oi -t -odq")
or die "Can't fork for sendmail: $!\n";
print SENDMAIL <<"EOF";
From: User Originating Mail <me\@host>
To: Final Destination <you\@otherhost>
Subject: A relevant subject line
Body of the message goes here after the blank line
in as many lines as you like.
EOF
close(SENDMAIL) or warn "sendmail didn't close nicely";
L'option B<-oi> empêche sendmail d'interpréter une ligne constituée
d'un seul point comme une "fin de message". L'option B<-t> lui dit
d'utiliser les en-têtes pour décider à qui envoyer le message, et
B<-odq> lui dit de placer le message dans la file d'attente. Cette
dernière option signifie que votre message ne sera pas immédiatement
envoyé, donc ne la mettez pas si vous voulez un envoi immédiat.
Alternativement, des approches moins pratiques comprennent l'appel
direct à mail (parfois appelé mailx) ou la simple ouverture du port 25
pour avoir une conversation intime rien qu'entre vous et le démon SMTP
distant, probablement sendmail.
Ou vous pourriez utiliser le module Mail::Mailer du CPANE<nbsp>:
use Mail::Mailer;
$mailer = Mail::Mailer->new();
$mailer->open({ From => $from_address,
To => $to_address,
Subject => $subject,
})
or die "Can't open: $!\n";
print $mailer $body;
$mailer->close();
Le module Mail::Internet utilise Net::SMTP qui est moins
Unix-centrique que Mail::Mailer, mais moins fiable. Évitez les
commandes SMTP crues. Il y a de nombreuses raisons pour utiliser un
( run in 1.965 second using v1.01-cache-2.11-cpan-97f6503c9c8 )