11.10.1 Objets SMTP

Une instance de SMTP possède les méthodes suivantes:

set_debuglevel(niveau)
Définit le niveau de débogage. Une valeur vraie pour niveau provoque la production de messages de débogage pour la connexion et pour tous les messages envoyés vers le serveur et reçus du serveur.

connect([hote[, port]])
Se connecte à un hôte sur un port donné. Par défaut, se connecte à l'hôte local sur le port SMTP standard (25).

Si le nom d'hôte se termine par deux points (":") suivi d'un nombre, ce suffixe sera enlevé et le nombre sera interprété comme le numéro de port à utiliser.

Note: Cette méthode est automatiquement invoquée par le constructeur si un hôte est spécifié lors de l'instanciation.

docmd(cmd, [, chainearg])
Envoie une commande cmd au serveur. L'argument optionnel chainearg est simplement concaténé à la commande, séparé par un espace.

Ceci retourne un couple composé d'un code numérique de réponse et de la ligne de réponse effective (les lignes multiples sont jointes en une longue ligne unique.)

En fonctionnement normal il ne doit pas être nécessaire d'appeler cette méthode explicitement. Elle sert à implémenter d'autres méthodes et peut être utile pour tester ses propres extensions.

Si la connexion au serveur est perdue pendant l'attente de la réponse, SMTPServerDisconnected sera déclenchée.

helo([nomhote])
Vous identifie auprès du serveur SMTP en utilisant "HELO". L'argument nom d'hôte est par défaut le nom de domaine entièrement qualifié de l'hôte local.

En fonctionnement normal il ne doit pas être nécessaire d'appeler cette méthode explicitement. Elle sera appelée implicitement par sendmail() quand ce sera nécessaire.

ehlo([nomhote])
Vous identifie auprès d'un serveur ESMTP en utilisant "EHLO". L'argument nom d'hôte est par défaut le nom de domaine entièrement qualifié de l'hôte local. Examinez la réponse pour l'option ESMTP et stockez-la pour l'exploiter par has_option().

A moins que vous ne vouliez utiliser has_option() avant d'envoyer des mails, il ne doit pas être nécessaire d'appeler cette méthode explicitement. Elle sera appelée implicitement par sendmail() quand ce sera nécessaire.

has_extn(nom)
Retourne 1 si nom figure dans l'ensemble des extensions de service SMTP retournées par le serveur, 0 sinon. La casse est ignorée.

verify(adresse)
Vérifie la validité d'une adresse sur ce serveur en utilisant la commande SMTP "VRFY". Retourne un tuple constitué du code 250 et d'une adresse RFC 822 complète (y compris un nom d'individu) si l'adresse utilisateur est valide. Sinon retourne un code d'erreur SMTP de 400 ou plus et une chaîne d'erreur.

Note: de nombreux sites désactivent la commande SMTP "VRFY" pour déjouer les polluposteurs.

sendmail(adresse_expediteur, adresses_destinataires, message[, options_mail, options_rcpt])
Envoie un mail. Les arguments requis sont sont une chaîne d'adresse expéditeur RFC 822, une liste de chaînes d'adresses destinataire RFC 822, et une chaîne de message. L'appelant peut passer une liste d'options ESMTP (telles que "8bitmime") pour servir dans des commandes "MAIL FROM" dans options_mail. Les options ESMTP (telles que les commandes "DSN") qui doivent être utilisées avec toutes les commandes "RCPT" peuvent être passées dans options_rcpt. (Si vous devez utiliser des options ESMTP différentes selon les destinataires, il faudra passer par les méthodes de bas niveau telles que mail, rcpt et data pour envoyer le message.)

Note: Les parametres adresse_expediteur and adresses_destinataires servent à construire l'enveloppe de message utilisée par les agents de transport. La classe SMTP ne modifie en rien les en-têtes de messages.

S'il n'y a pas eu de commande "EHLO" ou "HELO" auparavant dans la session, cette méthode essaie le "EHLO" ESMTP en premier. Si le serveur traite ESMTP, la taille du message et chacune des options spécifiées lui seront passées (si l'option fait partie de celles que le serveur comprend). Si "EHLO" échoue, "HELO" sera essayé et les options ESMTP seront supprimées.

Cette méthode se terminera normalement si le courriel est accepté pour au moins un destinataire. Sinon elle déclenchera une exception. Donc, si la méthode ne déclenche pas d'exception, alors quelqu'un devrait recevoir le courriel. Si cette méthode ne déclenche pas d'exception, elle retourne un dictionnaire, avec une entrée pour chaque destinataire qui a été refusé. Chaque entrée contient un tuple du code erreur SMTP et du message d'erreur correspondant envoyé par le serveur.

Cette méthode peut déclencher les exceptions suivantes:

SMTPRecipientsRefused
Tous les destinataires ont été refusés; personne n'a reçu le mail. L'attribut recipients de l'objet exception est un dictionnaire avec des informations au sujet des destinataires refusés (les mêmes que quand au moins un destinataire a été accepé).

SMTPHeloError
Le serveur n'a pas répondu correctement au message "HELO".

SMTPSenderRefused
Le serveur n'a pas accepté l' adresse_expediteur.

SMTPDataError
Le serveur a répondu avec un code d'erreur inattendu (autre qu'un refus de destinataire).

Sauf indication contraire, la connexion sera ouverte même après qu'une exception a été déclenchée.

quit()
Termine la session SMTP et ferme la connexion.

Les méthodes de bas niveau correspondant aux commandes standard SMTP/ESMTP "HELP", "RSET", "NOOP", "MAIL", "RCPT" et "DATA" sont aussi prises en charge. Normalement on n'a pas besoin de les appeler directement, elles ne sont donc pas documentées ici. Pour des détails, consulter le code du module.