Maison  >  Article  >  développement back-end  >  Astuces | Python envoie des e-mails régulièrement (en ajoutant automatiquement des pièces jointes) sans rester bloqué

Astuces | Python envoie des e-mails régulièrement (en ajoutant automatiquement des pièces jointes) sans rester bloqué

Python当打之年
Python当打之年avant
2023-08-10 16:11:42893parcourir

Présentation du numéro

Au travail, nous avons souvent besoin de Est-ce pratique de travailler rapports, envoi de fichiers et autres tâches à d'autres périodes ? À l'heure actuelle, il serait pratique de configurer l'envoi périodique d'e-mails sans avoir à effectuer des opérations manuelles à chaque fois. Dans ce numéro, je vais vous présenter plusieurs bibliothèques liées à l'envoi régulier d'e-mails, j'espère que cela vous sera utile.

Principalement lié à :

email --Définir le format et le contenu de l'e-mail

smtplib -- envoyer un e-mail

calendrier -- Tâches planifiées
1.
1.1 Paramètres

Connectez-vous à votre boîte mail QQ, ouvrez Paramètres - Compte (l'opération ici est personnelle boîte aux lettres, sélection de boîte aux lettres d'entreprise Autre Emaili.e. les ici), cliquez sur Ouvrir à l'arrière et demandez à utiliser le téléphone mobile lié pour envoyer « Configurer le client de messagerie » au numéro spécifié, faites-le simplement, et vous recevrez ensuite le Code d'autorisation de service.

Astuces | Python envoie des e-mails régulièrement (en ajoutant automatiquement des pièces jointes) sans rester bloqué

2. Envoyer un e-mail

2.1 Importer des modules liés à l'e-mail/smtplib
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
import smtplib
Attention :S'il n'y a pas de module pertinent, il suffit de pip install xxx.

2.2 module email

MIMEText : représente un objet texte

MIMEImage  : représente un objet image

MIMEMultipart(a trois sous-types) : mixte, alternatif, lié.

  • mixte Lorsque l'email contient des pièces jointes, doit définir le type multipart/mixte
  • Quand les pièces jointes contiennent également des ressources intégrées,
  • doivent définir le type
    multipart/connexe
MIMEApplication : Pièce jointe encapsulée

2.2.1 Paramètres de messagerie

# 设置邮箱的域名
HOST = 'smtp.qq.com'
# 设置邮件标题
SUBJECT = '工作汇报'
# 设置发件人邮箱
FROM = 'aaa@qq.com'
# 设置收件人邮箱,可以同时发送到多个邮箱(用list)
TO = 'bbb@qq.com'
# 设置附件模式
message = MIMEMultipart('mixed')

2.2.2 添加正文 

MIMEText
''' 添加正文 '''
content = '欧sir,附件为最新日期文件,请查收!'
content_msg = MIMEText(content)
message.attach(content_msg)

2.2.3 添加图片文件 

MIMEImage
image_file = open('Python当打之年.jpg', 'rb').read()
image = MIMEImage(image_file)
image.add_header('Content-Disposition', 'attachment', filename='Python当打之年.jpg')
message.attach(image)

2.2.4 添加doc文件 

MIMEApplication
doc = '算法与数据结构.doc'
doc_file = MIMEApplication(open(doc, 'rb').read())
doc_file.add_header('Content-Disposition', 'attachment', filename=doc)
message.attach(doc_file)

2.2.5 添加pdf文件 

MIMEApplication
pdf = 'Python高性能编程.pdf'
pdf_file = MIMEApplication(open(pdf, 'rb').read())
pdf_file.add_header('Content-Disposition', 'attachment', filename=pdf)
message.attach(pdf_file)

2.2.6 添加表格文件 

MIMEApplication
csv_file = open('blockdtas.xlsx', 'rb').read()
csv = MIMEApplication(csv_file)
csv.add_header('Content-Disposition', 'attachment', filename='blockdtas.xlsx')
message.attach(csv)

2.3 module smtplib

Envoi email client :

# 获取SSL证书
email_client = smtplib.SMTP_SSL(host='smtp.qq.com')
# 设置域名和端口,端口为465
email_client.connect(HOST, '465')
# 邮箱授权码
email_client.login(FROM, '你的授权码')
email_client.sendmail(from_addr=FROM, to_addrs=TO.split(','), msg=message.as_string())
# 关闭邮件发送客户端
email_client.quit()
运行效果
Astuces | Python envoie des e-mails régulièrement (en ajoutant automatiquement des pièces jointes) sans rester bloqué


3. Tâches planifiées

Bibliothèque de planification 3.1

import schedule as schedule
schedule:是python的一个轻量级定时任务库,可以完成每分钟,每小时,每天,周几,特定日期的定时任务。
eg:每分钟执行一次任务
def func():
    print('{} 执行func'.format(time.strftime("%H:%M", time.localtime())))

schedule.every(1).minutes.do(func)

效果:

Astuces | Python envoie des e-mails régulièrement (en ajoutant automatiquement des pièces jointes) sans rester bloqué

3.2 定时发送邮件 

以下是几个周期发送邮件的语法,大家可以自行运行:

# 每1分钟执行一次任务:
schedule.every(1).minutes.do(send_email)
# 每小时执行一次任务:
schedule.every().hour.do(send_email)
# 每天在什么时间点执行一次任务:
schedule.every().day.at('17:30').do(send_email)
# 每10-20分钟(随机)执行一次任务:
schedule.every(10).to(20).minutes.do(send_email)
# 每周一执行一次任务:
schedule.every().monday.do(send_email)
# 每周一什么时间点执行一次任务:
schedule.every().monday.at('09:00').do(send_email)
# 每分钟在第45秒的时候执行任务:
schedule.every().minute.at(':45').do(send_email)

完。


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