python实现自动发送邮件

时间:2022-12-03 13:56:21

一、smtplib自带模块,发送邮件

二、email自带模块,包装内容、头部信息等

三、QQ邮箱需要生成授权码(相当于密码),163邮箱需要账号和密码

四、实战测试:

import smtplib
from email.mime.text import MIMEText #包装内容
from email.header import Header # 包装头部信息
# 登录邮箱
smtp_obj = smtplib.SMTP("smtp.qq.com")
# 邮箱的密码mctsqknolgyibgfe(授权许可)
smtp_obj.login("398*****@qq.com", "mctsqknolgyibgfe")
# 发送邮件
# 发给谁
to_person = "hotelmail@126.com"
# 主题
title = Header("测试邮件发送", "utf-8")
# 发送者
sender = Header("123123@qq.com","utf-8")
# 内容是什么
msg = MIMEText("这是一个关于python邮件发送", "html", "utf-8")
msg["From"]=sender # 发送者
msg["Subject"] = title
# 发送邮件
smtp_obj.sendmail("398******@qq.com", to_person, msg.as_string())

五、批量发送邮件

从表格中读取数据

import smtplib
from email.mime.text import MIMEText #包装内容
from email.header import Header # 包装头部信息
import xlrd

data = xlrd.open_workbook('名单.xlsx')
sheet = data.sheets()[0]
for i in range(sheet.nrows):
name = sheet.cell_value(i, 0)
old_money = sheet.cell_value(i, 1)
new_money = sheet.cell_value(i, 2)
# print(name, "---", old_money, "---", new_money)

# 登录邮箱
smtp_obj = smtplib.SMTP("smtp.qq.com")
# 邮箱的密码mctsqknolgyibgfe(授权许可)
smtp_obj.login("398*****@qq.com", "mctsqknolgyibgfe")
# 发送邮件
# 发给谁
to_person = "hotelmail@126.com"
# 主题
title = Header("测试邮件发送", "utf-8")
# 发送者
sender = Header("123123@qq.com", "utf-8")
# 内容是什么
msg = MIMEText(f"<h1>通知</h1> 您好:{name},由于<b>疫情原因</b>,公司调整**由原来的{old_money},调整为{new_money}", "html", "utf-8")
msg["From"] = sender # 发送者
msg["Subject"] = title
# 发送邮件
smtp_obj.sendmail("398******@qq.com", to_person, msg.as_string())
print(f"{name}的邮件已发送")