您的位置:

Python SMTP 发邮件教程

一、SMTP 发邮件简介

简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)是互联网标准协议之一,用于电子邮件的传输。该协议定义了电子邮件的传输方式以及客户端与服务器之间的通信规范。

在 Python 中使用 SMTP 协议向他人发起邮件的方式步骤大体如下:

1.连接 SMTP 服务器

2.发送 HELO 命令,告诉 SMTP 服务器你要发送邮件

3.如果服务器支持 TLS,则启动 TLS

4.验证登录账户密码(服务器常常需要先验证登录账户密码用户身份)

5.设置发件人、收件人、主题和正文

6.发送邮件

7.关闭 SMTP 连接

二、选择邮件客户端

Python 内置了 smtplib 模块,可以通过 Python 自带的方式实现发送邮件。

代码示例:

    import smtplib
    from email.mime.text import MIMEText
    from email.header import Header
    
    # 设置服务器所需信息
    # 163邮箱服务器地址
    mail_host = 'smtp.163.com'  
    # 163用户名
    mail_user = 'xxx@163.com'  
    # 密码(部分邮箱为授权码) 
    mail_pass = 'xxxxxx'   
    # 邮件发送方邮箱地址
    sender = 'xxx@163.com'  
    # 邮件接受方邮箱地址
    receivers = ['xxx@qq.com']  

    # 设置email信息
    # 邮件内容设置
    message = MIMEText('Python 邮件发送测试...', 'plain', 'utf-8')
    # 邮件主题       
    message['Subject'] = Header('Python SMTP 发邮件测试', 'utf-8')
    # 发送方信息
    message['From'] = Header('发件人名字', 'utf-8')
    # 接受方信息     
    message['To'] =  Header('测试', 'utf-8')

    # 连接并登录服务器 
    smtpObj = smtplib.SMTP()
    # 连接到服务器
    smtpObj.connect(mail_host, 25)
    # 打印出和SMTP服务器交互的所有信息
    smtpObj.set_debuglevel(1)
    # 登录到服务器
    smtpObj.login(mail_user,mail_pass) 

    # 发送邮件
    smtpObj.sendmail(
        sender, receivers, message.as_string())  

    # 退出   
    smtpObj.quit()   

三、设置邮件正文格式

在发送邮件的过程中,邮件正文的格式选择很重要,目前主流的邮件正文格式有:

  • 纯文本格式
  • HTML 格式
  • 富文本格式(HTML 代码套了一些标签)

在 Python 中,通过 MIMEText 模块实现上述代码示例中的邮件正文内容设置,其中 plain、html、rich 等均为 MIME 类型。

代码示例:

    # 纯文本格式 
    message = MIMEText('Python 邮件发送测试...', 'plain', 'utf-8')

    # HTML格式
    message = MIMEText('

Python 邮件发送测试...