一、简单邮件发送
'''程序描述: 该脚本程序,用于完成简单的邮件发送功能从文本文件中,提取内容,并发送给指定邮箱''''''作者 = xxxxx ''''''日期 = 2022.05.10 ''''''版本号 = ver1.0'''import smtplibfrom email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMETextfrom email.header import Headerimport osimport syscontext = ''''' emial contents source from : '''f = open('come_back.txt', 'rt', encoding = 'utf-8')for line in f :#context.append(\line)context = context + linef.close()#print(context)# Step 1 : 服务器准备 # 1.1 连接邮箱服务器con = smtplib.SMTP_SSL('smtp.163.com', 465)# 1.2 登录邮箱con.login('xxxxx@163.com', 'xxxxxx')# Step 2: 准备数据# 2.1 创建邮件对象msg = MIMEMultipart()# 2.2 设置邮件主题subject = Header('Email Test', 'utf-8').encode()msg['Subject'] = subject# 2.3 设置邮件发送者msg['From'] = 'xxxxxx@163.com
二、自动发送邮件功能
简单邮件传输协议(SMTP)是一种协议,用于在邮件服务器之间发送电子邮件和路由电子邮件 。提供模块,该模块定义了一个SMTP客户端会话对象,可用于使用SMTP或ESMTP侦听器守护程序向任何互联网机器发送邮件 。
SMTP通讯的基本流程可以概括为以下几点:
1.连接SMTP服务器
2.登陆用户名和密码
3.发送指定邮件内容
4.退出SMTP连接
2.1发送纯文本格式邮件
#coding:utf-8import sysreload(sys)sys.setdefaultencoding('utf8')import smtplibfrom smtplib import SMTPfrom email.mime.text import MIMETextfrom email.header import Header#构造纯文本邮件内容msg = MIMEText('hello,send by Python.....','plain','utf-8')#发送者邮箱sender = 'xxxxx@XXXXX.com.cn'#发送者的登陆用户名和密码user = 'xxxxx@XXXX.com.cn'password = 'xxxxxx'#发送者邮箱的SMTP服务器地址smtpserver = 'xxxx'#接收者的邮箱地址receiver = ['xxxxxx@qq.com','xxxxxx@outlook.com'] #receiver 可以是一个listsmtp = smtplib.SMTP() #实例化SMTP对象smtp.connect(smtpserver,25) #(缺省)默认端口是25 也可以根据服务器进行设定smtp.login(user,password) #登陆smtp服务器smtp.sendmail(sender,receiver,msg.as_string()) #发送邮件,这里有三个参数'''login()方法用来登录SMTP服务器,sendmail()方法就是发邮件,由于可以一次发给多个人,所以传入一个list,邮件正文是一个str,as_string()把MIMEText对象变成str 。'''smtp.quit()
运行之后就会收到邮件:
文章插图
但是仔细观察会发现:
1.邮件没有主题
2.看不到收件人的信息
这是因为邮件主题、如何显示发件人、收件人等信息并不是通过SMTP协议发给MTA,而是包含在发给MTA的文本中的,所以,我们必须把From、To和添加到中,才是一封完整的邮件:
msg = MIMEText('hello,send by Python.....','plain','utf-8')msg['From'] = Header('Python测试','utf-8')msg['To'] = Header('管理员','utf-8')subject = 'python SMTP 测试邮件'msg['Subject'] = Header(subject,'utf-8')
2.2发送HTML格式的邮件
如果我们要发送HTML邮件,而不是普通的纯文本文件怎么办?方法很简单,在构造对象时,把HTML字符串传进去,再把第二个参数由plain变为html就可以了:
- 刘盆子简介中国史上唯一一位双目失明的皇帝
- Python 调用 Outlook 发送邮件
- 【2019CVPR学习】翻译
- 基于Python实现机器人自动走迷宫【100011016】
- 提示 “需要使用新应用以打开此windowsdefender链接“
- Win11解决需要使用新应用以打开此WindowsDefender链接
- 显示需要使用新应用打开此ms-windows-store链接的解决办法
- 60帧 CSS3 实现 60 FPS 动画效果
- 企业J2EE应用实践-档案管理系统
- 秦朝历史解密:秦始皇及秦国高层反对经商吗?