>  기사  >  백엔드 개발  >  팁 | Python은 멈추지 않고 정기적으로 이메일을 보냅니다(자동으로 첨부 파일 추가).

팁 | Python은 멈추지 않고 정기적으로 이메일을 보냅니다(자동으로 첨부 파일 추가).

Python当打之年
Python当打之年앞으로
2023-08-10 16:11:42893검색



직장에서 해야 할 일이 종종 있습니다. 일하기가 편리한가요? 보고서, 파일전송 등 다른 시간대의 작업을 매번 수동으로 하지 않고도 주기적으로 메일을 보낼 수 있도록 설정할 수 있다면 참 편리하지 않을까요? 이번 호에서는 정기적인 이메일 보내기와 관련된 여러 라이브러리를 소개하겠습니다.

주로 관련 항목:

email --이메일 형식 및 내용 설정

smtplib -- 이메일 보내기

schedule -- 예약된 작업
1. 이메일 설정

1.1 설정

QQ 메일함에 로그인하고 설정 - 계정 을 엽니다. , 회사 메일함 기타 이메일 예) :

팁 | Python은 멈추지 않고 정기적으로 이메일을 보냅니다(자동으로 첨부 파일 추가).
1.2 POP3/SMTP 서비스 승인 코드 받기

다음 4가지 항목이 처음으로 모두 꺼졌습니다(저는 켜두었습니다) 여기), 뒷면의 열기를 클릭하고 바인딩된 휴대폰을 사용하여 지정된 번호로 "이메일 클라이언트 구성"을 보내도록 요청하고 이를 수행하면 서비스 인증 코드를 받게 됩니다.

팁 | Python은 멈추지 않고 정기적으로 이메일을 보냅니다(자동으로 첨부 파일 추가).


2. 이메일 보내기

2.1 이메일/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
주의:해당 모듈이 없으면 pip install xxx만 하면 됩니다.

2.2 이메일 모듈

MIMEText: 는 텍스트 개체를 나타냅니다.

MIMEImage : 이미지 개체를 나타냅니다.

MIMEMultipart(세 가지 하위 유형이 있음): 혼합, 대체, 관련.

  • mixed 이메일 에 첨부 파일이 포함된 경우 는 다중 부분/혼합 유형
  • 을 정의해야 합니다.
  • alternative 이메일 에 일반 텍스트(text/plain)와 하이퍼텍스트(text/html)가 포함된 경우 멀티파트/alternative 유형을 정의해야 합니다
  • 관련된 경우 첨부 파일에는 포함된 리소스도 포함되어 있습니다. 멀티파트/관련type
  • 을 정의해야 합니다.
MIMEApplication: 캡슐화된 첨부 파일

2.2.1 이메일 설정

# 设置邮箱的域名
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 smtplib 모듈

클라이언트 이메일 보내기:

# 获取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()
运行效果
팁 | Python은 멈추지 않고 정기적으로 이메일을 보냅니다(자동으로 첨부 파일 추가).


3. 예약된 작업

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)

效果:

팁 | Python은 멈추지 않고 정기적으로 이메일을 보냅니다(자동으로 첨부 파일 추가).

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)

完。


위 내용은 팁 | Python은 멈추지 않고 정기적으로 이메일을 보냅니다(자동으로 첨부 파일 추가).의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 Python当打之年에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제