Home > Backend Development > Python Tutorial > Tips | Python sends emails regularly (automatically adding attachments) without getting stuck

Tips | Python sends emails regularly (automatically adding attachments) without getting stuck

Release: 2023-08-10 16:11:42
forward
1019 people have browsed it



##Introduction to this issue
At work, we often need to do work reports, file sending and other tasks every week, every day or other time periods. At this time, if you can set up periodic email sending, you don’t have to do it manually every time. , isn’t it very convenient? In this issue, I will introduce you to several libraries related to sending emails regularly. I hope it will be helpful to you.
Mainly involved:

email## -- Set email format and content

smtplib -- Send email

schedule -- Scheduled tasks
1. Email settings

1.1 Settings

Log in to your QQ mailbox and open Settings-Account (The operation here is a personal email, for corporate email, select Other EmailThat’s it)

Tips | Python sends emails regularly (automatically adding attachments) without getting stuck
##1.2 Get POP3 /SMTP Service Authorization Code

The following four items are all off for the first operation (I have already turned them on here). Click on the latter to open and require binding. Send "Configuration Email Client" to the designated number on your designated mobile phone, just follow the instructions, and then you will receive Service Authorization Code.

Tips | Python sends emails regularly (automatically adding attachments) without getting stuck


##2. Send email

2.1 Import email/smtplib related modules
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
Copy after login
Note: If there is no relevant module, just pip install xxx.

2.2 email module

MIMEText: represents a text object

MIMEImage: represents Picture object

MIMEMultipart( has three subtypes): mixed, alternative, related.

  • mixed When the email contains attachments, must define the multipart/mixed type
  • alternative When the email includes plain text body (text/plain) and hypertext body (text/html), must define multipart/ alternativeType
  • related When the email contains embedded resources in addition to attachments, must define multipart/ relatedType
MIMEApplication:Encapsulate attachment

2.2.1 ##Email Settings

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

2.2.2 添加正文

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

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)
Copy after login

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)
Copy after login

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)
Copy after login

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)
Copy after login

2.3 smtplib module

##Client email sending

# 获取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()
Copy after login
运行效果
Tips | Python sends emails regularly (automatically adding attachments) without getting stuck


3. Scheduled tasks

##3.1 schedule library

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

schedule.every(1).minutes.do(func)
Copy after login

效果:

Tips | Python sends emails regularly (automatically adding attachments) without getting stuck

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)
Copy after login

完。


The above is the detailed content of Tips | Python sends emails regularly (automatically adding attachments) without getting stuck. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:Python当打之年
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template