主要用于自己学习过程中的理解吧,有错误理解处会虚心改正 (>‿◠)✌
发文本邮件 By smtplib &email
smtplib简单格式
import smtplib
# 发信方的信息:发信邮箱,QQ邮箱授权码
from_addr = '本人@qq.com'
password = '授权码'
# 收信方邮箱
to_addr = '他人@qq.com'
# 发信服务器
smtp_server = 'smtp.qq.com' # 就是 host
server = smtplib.SMTP()
server.connect(host, port)#host='smtp.qq.com' port端口 qq邮箱为465
server.login(from_addr, password)
server.sendmail(from_addr, to_addr, msg.as_string())
server.quit()
email简单格式
from email.mime.text import MIMEText #email包
msg = MIMEText('所想写的文本','plain','utf-8')
# 邮箱正文内容,第一个参数为内容,第二个参数为格式(plain 为纯文本),第三个参数为编码
# MIMEText(msg, type, chartset)
# msg:文本内容,可自定义
# type:文本类型,默认为plain(纯文本)
# chartset:文本编码,中文为“utf-8”
例子smtplib &email 简单组合
# smtplib 用于邮件的发信动作
import smtplib
from email.mime.text import MIMEText
# email 用于构建邮件内容
# 发信方的信息:发信邮箱,QQ邮箱授权码
from_addr = '88888888@qq.com'
password = 'abcdefghijkl'
# 收信方邮箱
to_addr = '000000000@qq.com'
# 发信服务器
smtp_server = 'smtp.qq.com'
# 邮箱正文内容,第一个参数为内容,第二个参数为格式(plain 为纯文本),第三个参数为编码
msg = MIMEText('send by Python','plain','utf-8')
# 开启发信服务,这里使用的是加密传输 ↓ SSL格式,非加密用端口port=25 内容会被开放 对所有人可见,不安全
server =smtplib.SMTP_SSL(host='smtp.qq.com') #因为Python 3.7修改了ssl.py,导致smtplib.SMTP_SSL也连带产生了问题,需要加 host
server.connect( smtp_server,port=465) #smtp_server不能少, 否则计算机积极拒绝,无法连接。
#其实host=变量smtp_server='smtp.qq.com'
# 登录发信邮箱
server.login(from_addr, password)
# 发送邮件
server.sendmail(from_addr, to_addr, msg.as_string())
#from_addr:邮件发送者地址。
#to_addr:邮件收件人地址。
#msg.as_string():为一个字符串类型
# 关闭服务器
server.quit()
添加邮件头(header)简单格式
from email.header import Header
msg['From'] = Header('xxx')
msg['To'] = Header('xxx')
msg['Subject'] = Header('xxx')
丰富正文内容
因为邮件正文总是要换行,所以为了方便就用 → 三引号’’’ ← 吧!
建议先设置一个变量text用来放正文内容
text = '''亲爱的,你好!
我是xxxxxx,能遇见你很开心。
希望学习Python对你不是一件困难的事情!
人生苦短,我用Python
'''
msg = MIMEText(text,'plain','utf-8')
出于代码隐私保护
出于保护隐私的目的,我们可以把收发件人,和授权码这些信息用 input() 变成需要输入的模式。
# 发信方的信息:发信邮箱,QQ邮箱授权码)
from_addr = input('请输入登录邮箱:')
password = input('请输入邮箱授权码:')
# 收信方邮箱
to_addr = input('请输入收件邮箱:')
群发邮件
1.设置一个列表形式的变量
Header组合join()
to_addrs = ['AAAAA@qq.com','BBBBBB@qq.com']
msg['To'] = Header(",".join(to_addrs)) # Header里只能添加str和字节
# 列表 需用到 '间隔符'.join(列表) 方法
# 把列表元素通过间隔符连接成一个整体的 字符串。==
2.用while循环
to_addrs = []
while True:
a=input('请输入收件人邮箱:')
#输入收件人邮箱
to_addrs.append(a)
#写入列表
b=input('是否继续输入,n退出,任意键继续:')
#询问是否继续输入
if b == 'n':
break
print(to_addrs)