Python 发送邮件
1、案例一 (发送普通邮件)
import smtplib
from email.mime.text import MIMEText
class SendEmail:
def __init__(self):
self.send_user = 'xxxxxxxxx@qq.com'
self.email_host = 'smtp.qq.com'
self.email_port = 465
self.password = 'xxxxxxxxx'
def send_email(self, title, data, user_list):
try:
message = MIMEText(data, _subtype='plain', _charset='utf-8')
message['Subject'] = title
message['From'] = self.send_user
message['To'] = ";".join(user_list)
server = smtplib.SMTP_SSL()
server.connect(self.email_host, self.email_port)
server.login(self.send_user, self.password)
server.sendmail(self.send_user, user_list, message.as_string())
server.close()
print("发送邮件成功,请查收")
except Exception as e:
print("发送邮件失败,报错信息:", e)
if __name__ == '__main__':
user_list = ["xxxxxxxxx@qq.com"]
title = "邮件标题"
data = "邮件内容"
send = SendEmail()
send.send_email(title, data, user_list)
2、案例二 (发送带附件的邮件)
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
class SendEmail:
def __init__(self):
self.send_user = 'xxxxxxxxx@qq.com'
self.email_host = 'smtp.qq.com'
self.email_port = 465
self.password = 'xxxxxxxxx'
def send_email(self, title, data, file_path_list, user_list):
try:
message = MIMEMultipart()
message.attach(MIMEText(data, 'plain', 'utf-8'))
message['Subject'] = title
message['From'] = self.send_user
message['To'] = ";".join(user_list)
for file_path in file_path_list:
attrs = MIMEText(open(file_path, 'rb').read(), 'base64', 'utf-8')
attrs["Content-Type"] = 'application/octet-stream'
attrs["Content-Disposition"] = 'attachment; filename={}'.format(str(file_path).split('/')[-1])
message.attach(attrs)
server = smtplib.SMTP_SSL()
server.connect(self.email_host, self.email_port)
server.login(self.send_user, self.password)
server.sendmail(self.send_user, user_list, message.as_string())
server.close()
print("发送邮件成功,请查收")
except Exception as e:
print("发送邮件失败,报错信息:", e)
if __name__ == '__main__':
user_list = ["xxxxxxxxx@qq.com"]
title = "邮件标题"
data = "邮件内容"
file_path_list = ['demo.jpg']
send = SendEmail()
send.send_email(title, data, file_path_list, user_list)
3、案例三 (发送一个HTML片段)
import smtplib
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
class SendEmail:
def __init__(self):
self.send_user = 'xxxxxxxxx@qq.com'
self.email_host = 'smtp.qq.com'
self.email_port = 465
self.password = 'xxxxxxxxx'
def send_email(self, title, data, user_list):
try:
message = MIMEMultipart('related')
content = MIMEText(data, 'html', 'utf-8')
message.attach(content)
message['Subject'] = title
message['From'] = self.send_user
message['To'] = ";".join(user_list)
file = open("demo.jpg", "rb")
img_data = file.read()
file.close()
img = MIMEImage(img_data)
img.add_header('Content-ID', 'image')
message.attach(img)
server = smtplib.SMTP_SSL()
server.connect(self.email_host, self.email_port)
server.login(self.send_user, self.password)
server.sendmail(self.send_user, user_list, message.as_string())
server.close()
print("发送邮件成功,请查收")
except Exception as e:
print("发送邮件失败,报错信息:", e)
if __name__ == '__main__':
user_list = ["xxxxxxxxx@qq.com"]
title = "邮件标题"
data = """
<p>全是BUG</p>
<p><a href="https://www.cnblogs.com/xingxingnbsp/">菜鸟程序员博客</a></p>
<p>图片演示:</p>
<p><img src="cid:image"></p>
"""
send = SendEmail()
send.send_email(title, data, user_list)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?