SMTP是发送邮件的协议,python内置对SMTP的支持,可以发送纯文本邮件、html邮件,以及带附件的邮件。

python对SMTP的支持,有两大模块:smtplib和email。其中smtplib负责发送邮件,email负责构造邮件。

一、总体思路

  (一)创建smtp服务器对象,设置发送邮件服务器的地址和端口,

  (二)告诉服务器发送邮箱的地址和密码,

  (三)设置具体邮件内容,包括:发送者、接受者、邮件主题、邮件正文、附件,

  (四)将设置好的邮件内容传递给服务器,并发送,

  (五)发送后关闭服务器,

二、具体步骤:发送一封不带附件的纯文本邮件

复制代码
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 发送一封不带附件的纯文本邮件: from QQ to 139

# SMTP简单邮件传输协议
import smtplib                                      # smtplib:帮助设置SMTP服务器的库
from email.mime.text import MIMEText                # email:帮助设置邮件内容的库

# 一、构造邮件
# 1.1 设置相关参数
mail_type = 'plain'                         # 邮件类型
mail_code = 'utf-8'                         # 邮件编码
sender = '48237447@qq.com'                  # 发送方
receiver = '15056925802@139.com,'           # 接收方
content = 'python 发送邮件测试……'         # 邮件内容
subject = 'python SMTP 发送邮件测试QQ-139'    # 主题

# 1.2 将参数配置给邮件
message = MIMEText(content,mail_type,mail_code)
message['subject'] = subject
message['From'] = sender
message['To'] = receiver

# 二、发送邮件
# 2.1 设置相关参数
msg_server = 'smtp.qq.com'              # 邮件服务器地址
msg_port = 465                           # 邮件服务器端口号
sender_pwd = 'fkiemkwmgqaqcahe'        # 发送方邮箱授权码


# 2.2 通过指定服务器和邮箱,发送邮件
try:
    # 2.2.1 开启服务器
    server = smtplib.SMTP_SSL(msg_server,msg_port)

    # 2.2.2 登录邮箱
    server.login(sender,sender_pwd)

    # 2.2.3 发送
    server.sendmail(sender,receiver,message.as_string())

    # 2.2.4 关闭服务器
    server.quit()

    print('发送成功')
except Exception as e:
    print('发送失败')
    print(e)
from_qq_to_139
复制代码

三、注意事项

(一)关于ssl

SSL安全证书确保从客户端设备到邮件服务器端的数据传输为加密方式,除非获取SSL证书的私钥,否则目前第三方无法解密数据。

(二)关于服务器地址和端口号

各邮件服务器地址:网络查找

默认明文发送邮件的端口号:25,

SSL发送邮件的端口号各邮件服务器不同,QQ:465或587

(三)开启SMTP服务

使用邮箱服务器,必须开始SMTP服务,可在邮箱中设置

(四)关于授权码

使用QQ服务器发送邮件时,登录使用的是授权码而非密码,