python3、利用SMTP实现自动发送邮件!
首先声明,这个是偶然从别人的博客里发现的,觉得比较有趣,就自身亲自尝试了一番,在此做了点儿比较详细的整理和一点点小小的优化!
步骤:
1.发送QQ邮件,首先必须知道QQ邮箱的SMTP服务器!
2.发送邮件之前,必须开启qq邮箱的smtp服务
设置路径:设置--账户--开启截图上的服务--保存更改
3.Python对SMTP支持有smtplib和email两个模块,email负责构造邮件,smtplib负责发送邮件;
# 导入smtplib模块,smtplib负责发送邮件
import smtplib
# 导入email模块,email负责构造邮件
from email.mime.text import MIMEText
# 创建类
class SendEmil:
global send_user
global email_host
global password
# password为相对应的16位授权码,开启服务时收到的16位授权码
password = 'bkdzegokffjmhbei'
# email的主机地址
email_host = 'smtp.qq.com'
# 由谁发送的,发送者
send_user = '145XXXX708@qq.com'
def send_email(self,user_list,sub,content):
user = "shape" + "<" + send_user + ">"
# 构造MIMEText对象,第一个参数为邮件正文,第二个参数为MIME的图标类型,
# plain表示纯文本,最终的MIME就是'text/plain';第三个参数使用编码utf-8保证多语言兼容性
message = MIMEText(content,_subtype='plain',_charset='utf-8')
# 发送的邮件需要添加头部信息,包含发送者、接收者、邮件主题等信息;
# 邮件主题
message['Subject'] = sub
# 发送者
message['From'] = user
# 接收者
message['To'] = ";".join(user_list)
# 安全邮件,通过SSL发送,创建SSL安全连接
server = smtplib.SMTP_SSL()
# 启用SSL连接,端口一般是465
server.connect(email_host,465)
# login()登陆SMTP服务器
server.login(send_user,password)
# sendmail()发邮件,可一次发给多人,此处用列表,邮件正文为str,
# as_string()把MIMEText对象变成str
server.sendmail(user,user_list,message.as_string())
# 关闭SMTP服务器连接
server.close()
# 在当前脚本下运行
if __name__ == '__main__':
# 实例化类
send = SendEmil()
# 要发送的对象,可为多个
user_list = ['39XXXX259@qq.com']
# 邮件标题
sub = '测试邮件'
# 邮件内容
content = '哈哈哈哈哈'
# 发送
send.send_email(user_list,sub,content)
print("发送成功!")