以网易邮箱为例:
准备工作:
1)首先进入网页版网易邮箱,点击设置
2)点击,POP3/SMTP/IMAP
3)开启IMAP/SMTP服务 和POP3/SMTP服务 并且记住授权码(一定要记住只会出现一次)
1.发送纯文本邮件
# 使用 smtplib 模块发送纯文本邮件import smtplibimport sslfrom email.message import EmailMessageEMAIL_ADDRESS = "自己的邮箱账号"# 邮箱的地址EMAIL_PASSWORD = "自己的授权码"# 授权码# 连接到smtp服务器# smtp = smtplib.SMTP('', 25)# 未加密# 也可以使用ssl模块的context加载系统允许的证书,在登录时进行验证context = ssl.create_default_context()'''# 为了防止信息在网络传输中泄漏,最好对信息进行加密smtp = smtplib.SMTP_SSL("", 465, context=context) # 完成加密通讯# 连接成功后使用login方法登录自己的邮箱smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)# 一、使用 sendmail 方法实现发送邮件信息sender = EMAIL_ADDRESS# 用来发送的邮箱地址receive = "" # 目标邮箱地址subject = "邮件标题内容"body = "邮件主体内容"msg = f"Subject: {subject}\n\n{body}"smtp.sendmail(sender, receive, msg)# 发送完毕后使用 quit 方法关闭连接smtp.quit()'''subject = "邮件标题内容"body = "邮件主体内容"msg = EmailMessage()msg['subject'] = subject # 邮件标题msg['From'] = EMAIL_ADDRESS# 邮件发件人msg['To'] = "目标邮箱账号" # 邮件的收件人msg.set_content(body) # 使用set_content()方法设置邮件的主体内容# 为了防止忘记关闭连接也可以使用with语句with smtplib.SMTP_SSL("", 465, context=context) as smtp:# 完成加密通讯# 连接成功后使用login方法登录自己的邮箱smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)'''# 方式一:# 使用 sendmail 方法实现发送邮件信息sender = EMAIL_ADDRESS# 邮件发件人receive = EMAIL_ADDRESS # 邮件收件人subject = "subject"body = "body"msg = f"Subject: {subject}\n\n{body}"print("正在发送。。。。。。。。。。。。。。。。。。")smtp.sendmail(sender, receive, msg)print("发送成功。。。。。。。。。。。。。。。。。。")'''# 方式二:使用send_message方法发送邮件信息smtp.send_message(msg)
2.发送带有HTML的邮件
# 使用 smtplib 模块发送纯文本邮件import smtplibimport sslfrom email.message import EmailMessageEMAIL_ADDRESS = "自己的邮箱账号"# 邮箱的地址EMAIL_PASSWORD = "自己的授权吗"# 授权码# 使用ssl模块的context加载系统允许的证书,在登录时进行验证context = ssl.create_default_context()subject = "邮件标题内容"body = "邮件主体内容"msg = EmailMessage()msg['subject'] = subject # 邮件标题msg['From'] = EMAIL_ADDRESS# 邮件发件人msg['To'] = "目标邮箱账号" # 邮件的收件人msg.set_content(body) # 使用set_content()方法设置邮件的主体内容# 要想为邮件添加HTML内容,使用add_alternative()方法实现,注意要放在set_context之后HTML = """\<!doctype html><html lang="zh-cn"><head><meta charset="utf-8"><title>消失在宇宙星空中的404页面</title><link href="{{ url_for('static',filename='404/404.css') }}" rel="stylesheet" type="text/css"></head><body><p>HTML</p></div></body></html>"""msg.add_alternative(HTML, subtype='html')# 为了防止忘记关闭连接也可以使用with语句with smtplib.SMTP_SSL("", 465, context=context) as smtp:# 完成加密通讯# 连接成功后使用login方法登录自己的邮箱smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)# 使用send_message方法发送邮件信息smtp.send_message(msg)
3.发送带有附件的邮件
# 使用 smtplib 模块发送纯文本邮件import smtplibimport sslfrom email.message import EmailMessageEMAIL_ADDRESS = "自己的邮箱账号"# 邮箱的地址EMAIL_PASSWORD = "自己的授权码"# 授权码# 使用ssl模块的context加载系统允许的证书,在登录时进行验证context = ssl.create_default_context()subject = "邮件标题内容"body = "邮件主体内容"msg = EmailMessage()msg['subject'] = subject # 邮件标题msg['From'] = EMAIL_ADDRESS# 邮件发件人msg['To'] = "目标邮箱账号" # 邮件的收件人msg.set_content(body) # 使用set_content()方法设置邮件的主体内容# 要想为邮件添加附件内容首先要读入文件的二进制内容filename = '要附带的文件地址'with open(filename,'rb') as f:filedata = f.read()# 使用add_attachment方法添加附件的数据msg.add_attachment(filedata, maintype='', subtype='', filename=filename) # filedata:文件数据;maintype文件类型;subtype文件后缀名;filename:文件名# 为了防止忘记关闭连接也可以使用with语句with smtplib.SMTP_SSL("", 465, context=context) as smtp:# 完成加密通讯# 连接成功后使用login方法登录自己的邮箱smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)# 使用send_message方法发送邮件信息smtp.send_message(msg)
4.向多人发送邮件
# 使用 smtplib 模块发送纯文本邮件import smtplibimport sslfrom email.message import EmailMessageEMAIL_ADDRESS = "自己的邮箱地址"# 邮箱的地址EMAIL_PASSWORD = "自己的授权码"# 授权码# 使用ssl模块的context加载系统允许的证书,在登录时进行验证context = ssl.create_default_context()'''# 方法一:在msg的To部分设置多个email目标地址,使用列表存储这多个email地址,这会向多个用户发送相同的内容subject = "邮件标题内容"body = "邮件主体内容"msg = EmailMessage()msg['subject'] = subject # 邮件标题msg['From'] = EMAIL_ADDRESS# 邮件发件人msg['To'] = ['a.@', 'b@', 'c@'] # 邮件的收件人msg.set_content(body) # 使用set_content()方法设置邮件的主体内容# 为了防止忘记关闭连接也可以使用with语句with smtplib.SMTP_SSL("", 465, context=context) as smtp:# 完成加密通讯# 连接成功后使用login方法登录自己的邮箱smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)# 使用send_message方法发送邮件信息smtp.send_message(msg)'''# 方法二:向不同的用户发送不同的内容# 建立一个列表来存储目标邮箱地址contacts = ['a.@', 'b@', 'c@']# 为了防止忘记关闭连接也可以使用with语句with smtplib.SMTP_SSL("", 465, context=context) as smtp:# 完成加密通讯# 连接成功后使用login方法登录自己的邮箱smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)for contact in contacts:subject = "邮件标题内容"body = f"{contact}邮件主体内容"msg = EmailMessage()msg['subject'] = subject # 邮件标题msg['From'] = EMAIL_ADDRESS # 邮件发件人msg['To'] = contact # 邮件的收件人msg.set_content(body) # 使用set_content()方法设置邮件的主体内容# 使用send_message方法发送邮件信息smtp.send_message(msg)