准备条件
qq邮箱需要注册用户授权码,开启smtp服务:



代码
import smtplib
from email.mime.text import mimetext
from email.header import header
from email.mime.multipart import mimemultipart
from email.mime.image import mimeimage
def send_mail(sender, send_password, addressee, host='smtp.qq.com', port=465, code=1):
'''
# python使用纯文本或html发送电子邮件, 但不能同时使用两者(邮件正文,不能多次构造)
:param sender: 发件人邮箱
:param send_password: 发件人邮箱密码,qq邮箱为授权码
:param addressee:收件人邮箱,多个人就是要list
:param host:邮箱服务地址,发件人邮箱中的smtp服务器,qq邮箱服务器smtp.qq.com,136邮箱服务器smtp.136.com
:param port:邮箱服务地址端口,默认25,一般配置465不会错
:param code:选择发送邮件的方式sendmail或send_message
:return:
'''
# 1、纯文本内容
plain_message = mimetext('邮件正文内容:\n\t测试发送邮件的内容', 'plain', 'utf-8')
# 2、发送html格式的邮件,可支持添加图片,表格在正文中直接显示
mail_message = '''
<p>测试邮件</p>
<p><a href ='https://www.baidu.com'>点击跳转百度</a></p>
<p><img src="cid:image"></p>
'''
# 邮件附件
file1_path = r'd:\zhuomian\test_file\学习培训导入.xlsx'
attachment = mimetext(open(file1_path, 'rb').read(), 'base64', 'utf-8')
attachment.add_header('content-disposition', 'attachment', filename=('utf-8', '', '测试学习.xlsx'))
# 发送图片,和html格式配合使用
with open(r'd:\zhuomian\test_file\ddj50.png', 'rb') as img_file: # 读取图片
msgimage = mimeimage(img_file.read())
# 构建邮件
message = mimemultipart() # 构建主体
# message.attach(plain_message) # 添加纯文本内容,与html二选一使用
message.attach(mimetext(mail_message, 'html', 'utf-8')) # 添加html内容,与纯文本二选一使用
message.attach(attachment) # 添加附件
msgimage.add_header('content-id', '<image>') # 定义图片id,在html文本中引用
message.attach(msgimage) # 添加图片
# 发送邮件
try:
if code == 1: # sendmail方法发送邮件
message['subject'] = header('这是邮件主题测试:测试一下', 'utf-8') # 发送邮件主题
message['from'] = header('宝瑞', 'utf-8') # 设置发件人昵称
message['to'] = header('大宝贝', 'utf-8') # 设置收件人昵称
server = smtplib.smtp_ssl(host, port) # (连接邮箱的smtp服务器,参数为服务器地址和端口)
server.login(sender, password=send_password) # 登录邮箱,参数为发件人邮箱账号、邮箱授权码
server.sendmail(sender, addressee, message.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
else: # 使用send_message发送
message['subject'] = '测试邮件:测试一下' # 发送邮件主题
message['from'] = sender # 发件人
# message['to'] = addressee # 收件人,单个收件人
message["to"] = ";".join(addressee) # 收件人,同时发送多个用户,多人接受用message["to"] = ";".join(收件人列表)
server = smtplib.smtp_ssl(host, port) # (连接邮箱的smtp服务器,参数为服务器地址和端口)
server.login(sender, password=send_password)
server.send_message(message) # 括号中的参数为邮件构造体
server.quit() # 关闭连接
print('邮件发送成功!')
except:
print('邮件发送成功!')到此这篇关于python+smtplib库实现邮件发送功能的文章就介绍到这了,更多相关python smtplib邮件发送内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论