以网易邮箱为例:
准备工作:
1)首先进入网页版网易邮箱,点击设置
2)点击,POP3/SMTP/IMAP
3)开启 IMAP/SMTP服务 和 POP3/SMTP服务 并且记住授权码(一定要记住只会出现一次)
1.发送纯文本邮件
# 使用 smtplib 模块发送纯文本邮件
import smtplib
import ssl
from email.message import EmailMessage
EMAIL_ADDRESS = "自己的邮箱账号" # 邮箱的地址
EMAIL_PASSWORD = "自己的授权码" # 授权码
# 连接到smtp服务器
# smtp = smtplib.SMTP('smtp.163.com', 25) # 未加密
# 也可以使用ssl模块的context加载系统允许的证书,在登录时进行验证
context = ssl.create_default_context()
'''
# 为了防止信息在网络传输中泄漏,最好对信息进行加密
smtp = smtplib.SMTP_SSL("smtp.163.com", 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("smtp.163.com", 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 smtplib
import ssl
from email.message import EmailMessage
EMAIL_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 = """\
消失在宇宙星空中的404页面
HTML
3.发送带有附件的邮件
# 使用 smtplib 模块发送纯文本邮件
import smtplib
import ssl
from email.message import EmailMessage
EMAIL_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("smtp.163.com", 465, context=context) as smtp: # 完成加密通讯
# 连接成功后使用login方法登录自己的邮箱
smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
# 使用send_message方法发送邮件信息
smtp.send_message(msg)
4.向多人发送邮件
# 使用 smtplib 模块发送纯文本邮件
import smtplib
import ssl
from email.message import EmailMessage
EMAIL_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'] = ['[email protected]', '[email protected]', '[email protected]'] # 邮件的收件人
msg.set_content(body) # 使用set_content()方法设置邮件的主体内容
# 为了防止忘记关闭连接也可以使用with语句
with smtplib.SMTP_SSL("smtp.163.com", 465, context=context) as smtp: # 完成加密通讯
# 连接成功后使用login方法登录自己的邮箱
smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD)
# 使用send_message方法发送邮件信息
smtp.send_message(msg)
'''
# 方法二:向不同的用户发送不同的内容
# 建立一个列表来存储目标邮箱地址
contacts = ['[email protected]', '[email protected]', '[email protected]']
# 为了防止忘记关闭连接也可以使用with语句
with smtplib.SMTP_SSL("smtp.163.com", 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)