Comment définir les parties de l’enveloppe d’un e-mail
Maintenant que vous connaissez ces généralités, il est temps d’y regarder de plus près. Les sections qui suivent décrivent l’enveloppe d’un e-mail de façon plus précise.
Hôte
L’adresse de l’hôte est l’identificateur utilisé pour une connexion à un serveur. De même qu’une adresse sur une enveloppe n’est pas la position réelle du destinataire, l’adresse de l’hôte ne définit pas le serveur réel, mais plutôt l’emplacement de ce serveur.
La connexion utilisée pour accéder à la combinaison d’une adresse d’hôte et d’un port est appelée socket (c’est comme une prise de courant…). La provenance de ce nom étrange n’a pas d’importance. L’essentiel, c’est que vous pouvez l’utiliser pour trouver toutes sortes d’informations utiles pour comprendre comment fonctionne la messagerie électronique. Les étapes qui suivent vont vous aider à voir tout cela en action. Ce qui compte le plus, c’est de bien comprendre l’idée générale sur ce qu’est l’enveloppe d’un e-mail et les adresses qu’il contient.
- Ouvrez une fenêtre de Python en mode Shell.
Vous voyez l’indicatif habituel. - Tapez import socket et appuyez sur Entrée.
Pour pouvoir travailler avec des sockets, vous devrez tout d’abord importer la bibliothèque correspondante. Celle-ci contient toutes sortes d’attributs compliqués, et il faut donc s’en servir en prenant des précautions. Mais on y trouve aussi des fonctions intéressantes qui peuvent vous aider à mieux voir comment sont gérées les adresses Internet. - Tapez socket.gethostbyname("localhost") et appuyez sur Entrée.
Vous voyez s’afficher une adresse d’hôte, en l’occurrence 127.0.0.1 qui est l’adresse standard associée au nom d’hôte localhost (en fait, celle de votre propre système). - Tapez socket.gethostbyaddr("127.0.0.1") et appuyez sur Entrée.
Attendez-vous à une surprise. Vous obtenez en fait un tuple dont le contenu peut éventuellement vous laisser quelques doutes sur ce qui se passe dans votre machine. Vous constatez cependant que le nom de votre machine est bien présent dans la liste. - Tapez socket.gethostbyname("www.aimerfr.com") et appuyez sur Entrée.
Vous voyez s’afficher la sortie illustrée sur la Figure. Il s’agit du site Web d’un éditeur bien connu… Le point principal 要点, c’est que cette adresse fonctionne où que vous vous trouviez, et quoi que vous fassiez, exactement comme si elle était inscrite sur une enveloppée papier. Un service postal utilise des adresses qui sont uniques, et l’Internet agit de la même manière.
Figure : Les adresses que vous utilisez pour envoyer des e-mails sont uniques.>>> socket.gethostbyname("www.aimerfr.com") '199.33.112.227'
- Vous pouvez refermer la fenêtre de Python.
Port
Un port est un point d’entrée spécifique dans un serveur. L’adresse de l’hôte spécifie l’emplacement, mais le port définit où précisément entrer. Même si vous ne précisez pas un numéro de port chaque fois que vous utilisez une adresse d’hôte, cette information est implicite. L’accès est toujours autorisé en combinant l’adresse de l’hôte et le port. Les étapes qui suivent illustrent ce mode de fonctionnement.
- Ouvrez une fenêtre de Python en mode Shell.
Vous voyez l’indicatif habituel. - Tapez import socket et appuyez sur Entrée.
Rappelez-vous qu’un socket fournit à la fois l’adresse de l’hôte et le port. Vous l’utilisez pour créer une connexion qui comprend ces deux éléments. - Tapez socket.getaddrinfo("localhost", 110) et appuyez sur Entrée.
La première valeur est le nom de l’hôte sur lequel vous voulez obtenir des informations. La seconde valeur est un numéro de port sur cet hôte, en l’occurrence le port 110.
Vous obtenez une sortie semblable à celle qui est illustrée sur la Figure. Elle est formée de deux tuples : l’un pour le protocole Internet version 6 (IPv6), l’autre pour le protocole Internet version 4 (IPv4). Chaque tuple contient plusieurs entrées dont vous n’avez en fait pas à vous soucier, puisque vous n’en aurez vraisemblablement jamais besoin. Cependant, la dernière entrée, (’127.0.0.1’, 110), vous montre l’adresse et le port pour l’hôte local.
Figure : L’hôte local fournit des adresses IPv6 et IPv4.>>> socket.getaddrinfo("localhost", 110) [(<AddressFamily.AF_INET6: 23>, 0, 0, '', ('::1', 110, 0, 0)), (<AddressFamily.AF_INET: 2>, 0, 0, '', ('127.0.0.1', 110))]
- Tapez socket.getaddrinfo("www.pourlesnuls.fr", 80) et appuyez sur Entrée.
La Figure illustre la sortie produite par cette commande. Remarquez qu’elle donne uniquement une adresse IPv4 pour le port 80 du site. La méthode socket.getaddrinfo() fournit une indication utile pour déterminer comment vous pouvez accéder à un emplacement particulier. Notez qu’à ce jour, la quantité d’adresses IPv4 est proche de la saturation, le nouveau protocole IPv6, beaucoup plus efficace, prenant du temps à se déployer. - Tapez socket.getservbyport(25) et appuyez sur Entrée.
Vous pouvez voir la sortie illustrée sur la Figure. La méthode socket. getservbyport() fournit le moyen de déterminer comment est utilisé un certain port. Le port 25 est dédié au support SMTP sur tous les serveurs. Si vous accédez par exemple à l’adresse 127.0.0.1:80, vous demandez en fait le serveur SMTP sur l’hôte local. En résumé, un port fournit un type spécifique d’accès dans de nombreuses situations.
Figure : La plupart des emplacements Internet ne fournissent qu’une adresse IPv4.
Figure : Les ports standardisés procurent des services spécifiques sur chaque serveur.socket.getservbyport(25) 'smtp'
- Vous pouvez refermer la fenêtre de Python.
L’information sur le port n’est pas toujours disponible. Lorsque vous ne précisez pas de port, Python utilise une valeur par défaut. Cependant, faire confiance à ce port par défaut n’est pas une bonne idée, car vous ne savez pas exactement à quel service vous accédez. De plus, certains systèmes se servent d’affectation non standard des ports pour des raisons de sécurité. Vous devriez donc prendre l’habitude d’utiliser le numéro du port et de vous assurer qu’il correspond bien à la tâche que vous voulez réaliser.
Nom d’hôte local
Il s’agit simplement de la forme lisible par un être humain de l’adresse de l’hôte. En fait, les humains ont du mal à comprendre quelque chose comme 127.0.0.1 (et c’est encore bien pire pour la version IPv6). Par contre, un nom d’hôte local est bien plus facile à saisir. Il y a un serveur spécial et une configuration tout aussi spéciale qui permet de traduire les noms locaux en adresses d’hôtes, mais vous n’avez pas à vous en soucier dans ce livre (ni plus généralement ailleurs). Mais il est utile d’avoir quelques notions à ce sujet si votre application se plante soudainement sans raison apparente.
La section « Hôte », plus haut dans ce chapitre, vous a présenté la méthode socket.gethostbyaddr(), qui transforme une adresse en nom d’hôte. Vous avez aussi vu le processus inverse avec la méthode socket.gethostbyname(). Les étapes qui suivent vous aideront à saisir certaines nuances lors du travail avec le nom d’hôte :
- Ouvrez une fenêtre de Python en mode Shell.
Vous voyez l’indicatif habituel. - Tapez import socket et appuyez sur Entrée.
- Tapez socket.gethostname() et appuyez sur Entrée.
Vous voyez s’afficher le nom de votre système local, comme l’illustre la Figure. Bien entendu, le nom de votre propre système est différent du mien. Mais le principe est le même dans tous les cas.
Figure : Vous avez parfois besoin de connaître le nom du système local. - Tapez socket.gethostbyname(socket.gethostname()) et appuyez sur Entrée.
Vous voyez maintenant l’adresse IP du système local, comme l’illustre la Figure. Là encore, ce que vous obtenez chez vous est différent de ce qui apparaît sur la figure. Mais il s’agit d’une méthode que vous pouvez utiliser dans vos applications afin de déterminer l’adresse de l’expéditeur. Cette méthode fonctionne sur n’importe quel système.
Figure : Évitez chaque fois que possible d’utiliser des valeurs figées pour le système local.socket.gethostbyname(socket.gethostname()) '192.168.50.185'
Précédent:Courrier et serveur SMTP
Suivant:返回列表
-
法国留学预签证程序费
法国留学预签证程序费用为2800元。以下四类申请人可以享受程序费减免,减免后的费用为2000元。退款条件如果您超额付费,您可以申请退回超额部分的费用。请通过Etudes en France个人页面的留言系统,发留言申请退款。法国大使馆将不受理其他理由的退款(放弃、未获得延时等)。
-
Comment définir les parties de l’enveloppe d’un e-mail
Maintenant que vous connaissez ces généralités, il est temps d’y regarder de plus près. Les sections qui suivent décrivent l’enveloppe d’un e-mail de façon plus précise.
-
Courrier et serveur SMTP
Lorsque vous travaillez avec une messagerie, vous pouvez voir régulièrement quelque chose qui fait référence à l’acronyme SMTP (Simple Mail Transfert Protocol).
-
Comment mettre à jour le contenu d’un fichier
Certains trouvent que mettre à jour un fichier est une tâche complexe. En fait, ce n’est vrai que si vous voyez tout cela comme une tâche unique.
-
Comment lire le contenu d’un fichier de Python
Vos données sont maintenant enregistrées sur le disque dur. C’est très bien, car elles sont ainsi protégées. Mais ce n’est pas très utile tant que vous ne pouvez pas les relire. Pour cela, vous devez les charger en mémoire et effectuer sur elles les traitements voulus. Les étapes qui suivent vous montrent comment lire des données sur le disque pour pouvoir les afficher à l’écran. Cet exemple peut également être retrouvé dans les fichiers téléchargeables FormattedData.py and ReadCSV.py.
-
Comment créer un fichier via Python
Toute donnée créée par l’utilisateur (et/ou l’application) et qui est destinée à être réutilisée pendant plus d’une session doit être sauvegardée sur un support permanent quelconque.
-
Voix d’automne 秋之聲
Peut-être un hymne des cieux à la liberté. Toujours est-il qu'il nous hante, nous qui sommes rivés au sol .
-
Le devoir d’une étudiante
Le devoir d'une étudiante
-
Les classes et leurs composants
Une classe a une construction spécifique. Chaque partie d’une classe effectue une tâche particulière qui lui donne ses caractéristiques. Bien entendu, la classe commence avec un conteneur qui va l’englober en entier. C’est ce que nous allons préciser dans la prochaine section. Les sections qui suivent décrivent les autres parties d’une classe afin de mieux comprendre comment elles contribuent à celle-ci dans sa globalité.
-
Comment travailler avec les files
Une file fonctionne différemment d’une pile. C’est exactement le principe de la file d’attente à un guichet. Vous arrivez et vous vous placez à la fin de celle-ci. Au fur et à mesure que les autres personnes sont servies, vous avancez dans la file, jusqu’au moment où c’est à votre tour. Cette structure est souvent utilisée pour gérer les listes de tâches, ou encore pour gérer le flux d’un programme (comme dans le monde réel, en fait).
-
Comment créer des piles en utilisant des listes
Une pile est une structure de programmation utile, car vous pouvez l’utiliser pour sauvegarder l’environnement d’exécution d’une application (comme l’état des variables et d’autres attributs), ou encore pour déterminer l’ordre d’une exécution. Malheureusement, Python n’offre pas ce type de structure dans ses collections. Cependant, il dispose des listes, et vous pouvez utiliser celles-ci pour créer des piles parfaitement acceptables. Les étapes qui suivent vous montrent comment réaliser ce travail.
-
La pupille du chat décryptée par les scientifiques : dilatées, verticales... toutes les explications
Comment les pupilles des chats peuvent-elles passer d’une forme à l’autre ? Pourquoi ce changement ? Et qu’est-ce que cela signifie ? On passe en revue toutes les formes que prennent les yeux de nos matous !
-
Comment travailler avec les dictionnaires
Un dictionnaire Python fonctionne selon le même principe que votre Larousse ou votre Robert préféré. Vous créez une clé qui est associée à une valeur (pour un dictionnaire du monde réel, vous remplacez juste clé par mot, et valeur par définition).
-
Comment travailler avec les tuples
Un tuple est une collection servant à créer des listes complexes, dans lesquelles un tuple peut être imbriqué dans un autre.
-
Comment travailler avec l’objet Counter
Il arrive que vous ayez une source de données, et que vous vouliez simplement savoir combien de fois une certaine chose se produit (comme l’apparence d’un certain élément dans la liste). Si celle-ci est courte, vous pouvez simplement compter les éléments.
-
Comment faire des recherches dans les listes
Il n’est pas très facile de modifier une liste si vous ne savez pas ce qu’elle contient. La possibilité d’effectuer des recherches dans les listes est donc une tâche essentielle.
-
Comment utiliser des opérateurs avec les listes
Les listes peuvent aussi se servir d’opérateurs pour effectuer certaines tâches. Par exemple, si vous voulez créer une liste contenant quatre occurrences du mot Bonjour, vous pouvez écrire MaListe = [’Bonjour’] * 4 afin de la remplir. L’opérateur de multiplication ( *) indique combien de fois l’élément indiqué doit être répété.
-
Comment modifier des listes
Vous pouvez modifier à votre guise le contenu d’une liste. Cela signifie changer une entrée particulière, en ajouter une nouvelle, ou encore supprimer une entrée existante.
-
Comment parcourir les listes
Pour automatiser le traitement des listes, vous avez besoin de les parcourir. La méthode la plus simple consiste à utiliser une boucle for, comme l’illustrent les étapes qui suivent.
-
Comment accéder aux listes
Une fois que vous avez créé une liste, vous voulez accéder aux éléments qu’elle contient. La section précédente vous a montré comment print () et dir () vous permettaient d’interagir avec une liste, mais il y a bien entendu des tas d’autres possibilités.
-
Comment créer des listes
Avant de pouvoir faire quoi que ce soit avec une liste, vous devez évidemment commencer par créer celle-ci. Comme cela a été mentionné plus haut, les listes de Python peuvent mélanger différents types de données. Mais c’est toujours une bonne pratique de n’utiliser qu’un seul type chaque fois que c’est possible. Les étapes qui suivent vous montrent comment créer une liste dans Python.
-
Comprendre comment les ordinateurs voient les listes
Les ordinateurs ne voient pas les listes de la même façon que vous. Il n’a ni bloc-notes ni crayon. Il a juste de la mémoire.
-
Comment définir une organisation à l’aide de listes
Dans Python, une liste se définit comme étant un type de séquence. Les séquences fournissent un certain procédé permettant à de multiples données de coexister en tant qu’entités distinctes dans un même espace de stockage. Prenons l’exemple d’un grand immeuble : en bas, vous trouvez plusieurs blocs de boîtes aux lettres. Chacun contient une rangée de boîtes, et chaque boîte contient du courrier.
-
Comment formater les chaînes de caractères
Python vous permet de formater vos chaînes de caractères de multiples manières. Le rôle premier du formatage consiste à présenter les chaînes pour qu’elles soient à la fois plaisantes et faciles à comprendre.
-
Site de jeu en ligne gratuit pour apprendre le CSS
CSS est le langage que nous utilisons pour styliser un document HTML qui décrit comment les éléments HTML doivent être affichés dans un navigateur.