您的位置:

Python邮件发送模块安装方法

一、为什么需要邮件发送模块

在现代社会中,邮件已经成为人们经常使用的一种通信方式。在自动化的信息处理过程中,我们可能会需要使用Python来自动发送邮件。Python作为一种高效的脚本语言,有着极为丰富的第三方库。邮件发送模块是其中比较常用的一种。

Python邮件发送模块可以帮助开发者快速构建邮件发送代码。通过模块提供的方法,可以方便地配置邮件发送的各种参数,如发件人、收件人、主题、正文、附件等。使开发者不必自己编写复杂的SMTP协议,就能够轻松实现邮件的发送。

二、Python邮件发送模块有哪些

根据一个叫做PyPI的网站提供的数据,目前有很多Python邮件发送模块可供选择。其中比较常用的模块有:smtplib、email、yagmail等。下面我们分别介绍这些模块的安装方法及基本用法。

三、smtplib模块

首先介绍的是smtplib模块。smtplib模块具有最基本的邮件发送功能,可以发送纯文本的邮件,也可以发送HTML格式的邮件。使用smtplib模块进行邮件发送需要先安装模块。smtplib模块是Python自带的标准模块,因此可以直接使用pip命令进行安装。

    
        # 安装smtplib
        pip install smtplib
    

接下来我们展示一个smtplib模块发送邮件的代码示例。此示例演示了如何发送一封纯文本的邮件。

    
        import smtplib
        from email.mime.text import MIMEText
        from email.header import Header
     
        # 邮件发送方的地址和密码(登陆SMTP服务器)
        from_addr = 'xxx@163.com'
        password = 'xxx'
     
        # 邮件接收方的地址
        to_addr = 'yyy@qq.com'
     
        # 邮件 SMTP 服务器地址
        smtp_server = 'smtp.163.com'
     
        # 邮件正文内容
        message = MIMEText('Python 邮件发送测试', 'plain', 'utf-8')
        message['From'] = Header("发件人姓名", 'utf-8')
        message['To'] =  Header("收件人姓名", 'utf-8')
     
        # 邮件主题
        subject = 'Python SMTP 邮件测试'
        message['Subject'] = Header(subject, 'utf-8')
 
        # 开启SSL加密,使用SMTP_SSL连接服务
        smtpObj = smtplib.SMTP_SSL(smtp_server, 465)
        # 登录SMTP服务器
        smtpObj.login(from_addr, password)
        # 发送邮件
        smtpObj.sendmail(from_addr, to_addr, message.as_string())
        # 退出
        smtpObj.quit()
    

在运行该示例代码前,需要将from_addr、password、to_addr及smtp_server换成自己的发件人、密码、收件人和SMTP服务器的地址。

四、email模块

其次介绍的是email模块。email模块是Python标准库之一,提供了更多高级的邮件发送功能,支持发送HTML邮件、带附件的邮件,以及使用SMTP认证等。与smtplib模块不同,email模块不提供SMTP客户端功能,它只负责构造邮件。

使用email模块进行邮件发送也需要先安装该模块。同样地,email模块是Python自带的标准模块,因此可以直接使用pip命令进行安装。

    
        # 安装email
        pip install email
    

接下来我们展示一个email模块发送邮件的代码示例。此示例演示了如何发送一封带附件的邮件。

    
        import smtplib
        from email.mime.text import MIMEText
        from email.mime.multipart import MIMEMultipart
        from email.mime.application import MIMEApplication
        from email.header import Header
     
        # 邮件发送方的地址和密码(登陆SMTP服务器)
        from_addr = 'xxx@163.com'
        password = 'xxx'
     
        # 邮件接收方的地址
        to_addr = 'yyy@qq.com'
     
        # 邮件主题
        subject = 'Python SMTP 邮件测试'
     
        # 构造文本内容
        text_msg = MIMEText('Python 邮件发送测试', 'plain', 'utf-8')
     
        # 构造附件
        report_file = 'test_report.txt'
        with open(report_file, 'rb') as fp:
            attach = MIMEApplication(fp.read())
        attach.add_header('Content-Disposition', 'attachment', filename=report_file)
     
        # 构造邮件主体
        msg = MIMEMultipart()
        msg.attach(text_msg)
        msg.attach(attach)
     
        # 邮件参数设置
        msg['From'] = Header("发件人姓名", 'utf-8')
        msg['To'] = Header("收件人姓名", 'utf-8')
        msg['Subject'] = Header(subject, 'utf-8')
     
        # 邮件 SMTP 服务器地址
        smtp_server = 'smtp.163.com'
 
        # 开启SSL加密,使用SMTP_SSL连接服务
        smtpObj = smtplib.SMTP_SSL(smtp_server, 465)
        # 登录SMTP服务器
        smtpObj.login(from_addr, password)
        # 发送邮件
        smtpObj.sendmail(from_addr, to_addr, msg.as_string())
        # 退出
        smtpObj.quit()
    

在运行该示例代码前,需要将from_addr、password、to_addr、subject、report_file及smtp_server换成自己的发件人、密码、收件人、主题、附件和SMTP服务器的地址。

五、yagmail模块

最后介绍的是yagmail模块。yagmail模块是一个Python邮件发送模块,它使用简单、易用,支持发送HTML邮件和带附件的邮件。

yagmail模块不是Python自带的标准模块,使用前需要先安装。安装yagmail模块可以使用pip命令进行安装。

    
        # 安装yagmail
        pip install yagmail
    

下面我们展示一个yagmail模块发送邮件的代码示例。此示例演示了如何发送一封HTML格式的邮件。

    
        import yagmail
     
        # 邮件发送方的地址和密码
        from_addr = 'xxx@163.com'
        password = 'xxx'
     
        # 邮件接收方的地址
        to_addr = 'yyy@qq.com'
     
        # 邮件主题
        subject = 'Python yagmail 邮件测试'
     
        # 邮件正文
        contents = ['

Python HTML邮件发送测试

', '

,百度一下

', ''] # 图片附件 chart_file = 'chart.png' chart_cid = 'chart' # yagmail发送邮件 yag = yagmail.SMTP(from_addr, password) yag.send(to_addr, subject, contents, chart_file, chart_cid=chart_cid) yag.close()

在运行该示例代码前,需要将from_addr、password、to_addr、subject、contents、chart_file换成自己的发件人、密码、收件人、主题、正文、图片附件的文件名。注意:该示例中,需要将chart图片作为附件发送,并使用cid(Content-ID)指定附件的名称,以便在邮件正文中引用。

六、总结

Python邮件发送模块是Python开发中常用的一种模块,它可以帮助开发者快速、方便地实现邮件发送的功能。Python的第三方库很丰富,根据自己的需求,可以选择适合的邮件发送模块进行使用。在代码的编写过程中,需要根据实际情况进行邮件参数的设置,以保证邮件可以正常发送。