Maison  >  Article  >  développement back-end  >  Utiliser Python pour envoyer des e-mails

Utiliser Python pour envoyer des e-mails

PHPz
PHPzavant
2023-04-12 10:04:122972parcourir

Utiliser Python pour envoyer des e-mails

SMTP (Simple Mail Transfer Protocol) est un protocole de transfert de courrier simple. Il s'agit d'un ensemble de règles permettant de transmettre du

mail d'une adresse source à une adresse de destination. smtplib de Python fournit un moyen très pratique d'envoyer des e-mails. Il encapsule simplement le protocole SMTP.

1. Préparez le compte de messagerie utilisé pour envoyer des e-mails

Préparez le compte de messagerie et le code d'autorisation de connexion par e-mail. Les méthodes d'obtention des codes d'autorisation sont similaires pour différents types de boîtes aux lettres. Nous prenons ici la boîte aux lettres QQ comme exemple pour démontrer les étapes permettant d'obtenir les codes d'autorisation :

Étape 1 : Connectez-vous à la boîte aux lettres QQ à l'aide de la page Web et recherchez l'aide. centre

Utiliser Python pour envoyer des e-mails

Étape 2 : Dans l'aide Sélectionnez la deuxième question dans « Paramètres client » au centre :

Utiliser Python pour envoyer des e-mails

puis suivez les exigences correspondantes pour obtenir le code d'autorisation et enregistrez-le.

2. Étapes de base pour l'envoi d'e-mails

Les étapes pour envoyer des e-mails via un code sont fondamentalement les mêmes que celles pour l'envoi manuel d'e-mails : Connectez-vous à votre boîte aux lettres -> Préparer le contenu de l'e-mail -> Envoyer un e-mail.

2.1 Connectez-vous à votre messagerie

import smtplib
1. 连接邮箱服务器
连接对象 = smtplib.SMTP_SSL(服务器地址, 邮箱服务端口)
- 服务器地址:smtp.163.com(163邮箱)、smtp.qq.com(qq邮箱) - 邮箱服务端口:465或者25
2. 登录邮箱 连接对象.login(邮箱账号, 授权码)

2.2 Préparer les données

Les données font référence au contenu qui doit être envoyé. La construction du contenu d'e-mail nécessite une autre bibliothèque, email, qui peut être utilisée pour créer des sujets d'e-mail et diverses formes de contenu d'e-mail (y compris le contenu texte, le contenu d'image, le contenu html, les pièces jointes), etc. Parlons brièvement des sujets d'e-mail et du contenu texte. et d'autres formes de contenu seront expliquées en détail plus tard dans la section Contenu des e-mails.

from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.header import Header
1. 创建邮件对象
邮件对象 = MIMEMultipart()
2. 设置邮件主题
主题对象 = Header(邮件标题, 编码方式).encode()
邮件对象['Subject'] = 主题对象
3.设置邮件发送者
邮件对象['From'] = '用户名 <用户名>'
4.设置邮件接受者
邮件对象['To'] = '收件⼈1;收件⼈2;收件人3...'
5. 添加文字内容
文字内容对象 = MIMEText(内容, 类型, 编码方式)
- 内容:就是文字字符串
- 类型:plain(简单的⽂字内容)、html(超文本) 邮件对象.attach(文字对象)

2.3 Envoi d'e-mails

3. Exemples d'envoi de différents types d'e-mails

连接对象.sendmail(发件⼈, 收件人, 邮件对象.as_string())
连接对象.quit()

3.1 E-mails à contenu texte ordinaire

Le corps de l'e-mail de ce type d'e-mail ne contient que des informations textuelles ordinaires, sans hypertexte et sans images, et Aucune pièce jointe :

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.header import Header
# 1. 连接邮箱服务器
con = smtplib.SMTP_SSL('smtp.163.com', 465)
# 2. 登录邮箱
con.login('XXXX@163.com', 'XXXXX')
# 2. 准备数据
# 创建邮件对象
msg = MIMEMultipart()
# 设置邮件主题
subject = Header('找回密码', 'utf-8').encode() msg['Subject'] = subject
# 设置邮件发送者
msg['From'] = 'XXXX@163.com <XXXX@163.com>'
# 设置邮件接受者
msg['To'] = '726550822@qq.com'
# 添加⽂文字内容
text = MIMEText('忘记密码需要找回密码', 'plain', 'utf-8')
msg.attach(text)
# 3.发送邮件
con.sendmail('xxxx@163.com', '726550822@qq.com', msg.as_string())
con.quit()

Utiliser Python pour envoyer des e-mails

3.2 Contenu du fichier hypertexte

Une sorte d'e-mail avec un texte plus riche et plus intéressant Les e-mails que nous recevons des principales plateformes de la vie sont tous de tels e-mails. Le format de code de base est le suivant. suit :

from email.mime.text import MIMEText
html⽂本对象 = MIMEText(html内容字符串, 'html', 编码方式) 邮件对象.attach(html⽂本对象)

Code spécifique :

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.header import Header
con = smtplib.SMTP_SSL('smtp.163.com', 465)
con.login('xxxx@163.com', 'xxxxxx')
msg = MIMEMultipart()
subject = Header('找回密码', 'utf-8').encode()
msg['Subject'] = subject
msg['From'] = 'xxxx@163.com <xxxx@163.com>'
msg['To'] = '726550822@qq.com'
# 添加html内容
content = """
<h2>我是正⽂中的标题</h2>
<p>邮件正文描述性文字1</p>
<p>邮件正⽂描述性文字2</p>
<img  src='https://www.php.cn/link/deee9fe5195586bf4545518a76aff2f7/img/bd_logo1.png' alt="Utiliser Python pour envoyer des e-mails" > <center>百度图片</center>
<a href='https://www.php.cn/link/deee9fe5195586bf4545518a76aff2f7'>百度⼀下</a>
"""
html = MIMEText(content, 'html', 'utf-8')
msg.attach(html)
# 发送邮件
con.sendmail('xxxx@163.com', '726550822@qq.com', msg.as_string())
con.quit()

Utiliser Python pour envoyer des e-mails

3.3 Envoyer des pièces jointes

En plus du contenu principal de l'e-mail, il est parfois nécessaire d'envoyer divers fichiers séparément sous forme de pièces jointes. Le code de base pour l'envoi des pièces jointes est le suivant. suit :

from email.mime.text import MIMEText
⽂文件对象 = MIMEText(⽂件二进制数据, 'base64', 编码⽅式)
文件对象["Content-Disposition"] = 'attachment; filename="⽂件名"'
邮件对象.attach(⽂件对象)

Code spécifique :

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.header import Header
from email.mime.message import MIMEMessage from copy import deepcopy
con = smtplib.SMTP_SSL('smtp.163.com', 465)
con.login('xxxx@163.com', 'xxxxxx')
msg = MIMEMultipart()
subject = Header('⽂文件附件发送', 'utf-8').encode() msg['Subject'] = subject
msg['From'] = 'xxxx@163.com <xxxx@163.com>'
msg['To'] = '726550822@qq.com'
# 添加⽂文件附件
file1 = MIMEText(open('files/test.txt', 'rb').read(), 'base64', 'utf-8')
file1["Content-Disposition"] = 'attachment; filename="test.txt"'
msg.attach(file1)
file2 = MIMEText(open('files/pyecharts的使⽤用.pdf', 'rb').read(), 'base64', 'utf-8')
file2["Content-Disposition"] = 'attachment; filename="test.pdf"'
msg.attach(file2)
# 发送邮件
con.sendmail('xxxx@163.com', '726550822@qq.com', msg.as_string())
con.quit()

Utiliser Python pour envoyer des e-mails

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer