Python+smtplib库实现邮件发送功能

 更新时间:2025年02月08日 16:13:24   作者:觅远  
这篇文章主要为大家详细介绍了Python如何通过smtplib库实现简单的邮件发送功能,文中的示例代码借鉴一下,有需要的小伙伴可以参考一下

准备条件

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邮件发送内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python机器学习Github已达8.9Kstars模型解释器LIME

    python机器学习Github已达8.9Kstars模型解释器LIME

    这篇文章主要为大家介绍了Github已达8.9Kstars的最佳模型解释器LIME的使用示例及功能详解,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-11-11
  • 一劳永逸彻底解决pip install慢的办法

    一劳永逸彻底解决pip install慢的办法

    经常在使用Python的时候需要安装各种模块,而pip是很强大的模块安装工具,这篇文章主要给大家介绍了一个可以一劳永逸彻底解决pip install慢的办法,需要的朋友可以参考下
    2021-05-05
  • 解决python 读取 log日志的编码问题

    解决python 读取 log日志的编码问题

    今天小编就为大家分享一篇解决python 读取 log日志的编码问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python代码实现PDF与Word之间互转

    Python代码实现PDF与Word之间互转

    这篇文章主要介绍了如何使用Python的pdf2docx和win32com库进行PDF与DOCX之间的转换,包括单个文件和批量文件的处理,文中的示例代码讲解详细,有需要的小伙伴可以了解下
    2026-03-03
  • Python Pandas读取csv/tsv文件(read_csv,read_table)的区别

    Python Pandas读取csv/tsv文件(read_csv,read_table)的区别

    这篇文章主要给大家介绍了关于Python Pandas读取csv/tsv文件(read_csv,read_table)区别的相关资料,文中通过实例代码介绍的非常详细,对大家学习或者使用Pandas具有一定的参考学习价值,需要的朋友可以参考下
    2022-01-01
  • Pytorch数据类型与转换(torch.tensor,torch.FloatTensor)

    Pytorch数据类型与转换(torch.tensor,torch.FloatTensor)

    这篇文章主要介绍了Pytorch数据类型转换(torch.tensor,torch.FloatTensor),之前遇到转为tensor转化为浮点型的问题,今天整理下,我只讲几个我常用的,对Pytorch数据类型转换相关知识感兴趣的朋友一起看看吧
    2023-02-02
  • Python日期和时间戳的转换的实现方式

    Python日期和时间戳的转换的实现方式

    Python中日期和时间的处理涉及到time和datetime模块,time模块可实现时间戳与格式化时间字符串的转换,而datetime模块则提供更加直接易用的接口,本文详细给大家介绍了Python日期和时间戳的转换的实现方式,需要的朋友可以参考下
    2024-10-10
  • python读取几个G的csv文件方法

    python读取几个G的csv文件方法

    今天小编就为大家分享一篇python读取几个G的csv文件方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • 详解numpy1.19.4与python3.9版本冲突解决

    详解numpy1.19.4与python3.9版本冲突解决

    这篇文章主要介绍了详解numpy1.19.4与python3.9版本冲突解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • 通过shell+python实现企业微信预警

    通过shell+python实现企业微信预警

    这篇文章主要介绍了通过shell+python实现企业微信预警,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03

最新评论